<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.oros.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lmagimel</id>
	<title>OROS Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.oros.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lmagimel"/>
	<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=Special:Contributions/Lmagimel"/>
	<updated>2026-05-12T08:22:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.oros.com/index.php?title=Modal&amp;diff=12888</id>
		<title>Modal</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=Modal&amp;diff=12888"/>
		<updated>2026-05-04T13:24:28Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Modal]]&lt;br /&gt;
[[category:WikiOros]]&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Modal Analysis Software - Structural Dynamics | OROS&lt;br /&gt;
|keywords=Modal Analysis, Structural dynamics, Data Acquisition, Modal testing, Vibration, Frequency response, EMA, OMA, ODS&lt;br /&gt;
|description=OROS Modal software is a comprehensive solution for structural dynamics. Determine modal frequencies, damping ratios, and mode shapes with ease.&lt;br /&gt;
}}&lt;br /&gt;
{{Software&lt;br /&gt;
|Logo= [[image:structural-B-256.png|90px]]&lt;br /&gt;
|Name= Modal Software&lt;br /&gt;
|Screenshot=[[File:Modal_Manual_132.png|220px]]&lt;br /&gt;
|Developers= [http://www.OROS.com Oros SA]&lt;br /&gt;
|Type= [[Modal analysis|Modal Analysis]], [[Structural dynamics]], [[Data Acquisition]], [[Modal testing]], [[Vibration]], [[Frequency response]]&lt;br /&gt;
|First release= 2003&lt;br /&gt;
|Latest Version= V5.9 (2024)&lt;br /&gt;
|Download= [[Modal_Install|Download Here]]&lt;br /&gt;
|Operating system= Windows 10 &amp;amp; 11 ([[PC_Requirements|PC Requirements]])&lt;br /&gt;
|Language= English, Chinese&lt;br /&gt;
|Licence = Proprietary&lt;br /&gt;
|website=[https://www.oros.com/solutions/structural-dynamics/modal-analysis/ oros.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
'''OROS Modal''' is a high-performance software dedicated to structural dynamics. It allows engineers to identify the dynamic characteristics of structures through Modal Analysis (EMA/OMA) and Operating Deflection Shapes (ODS).&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing: 10px; border-collapse: separate;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50%; background: #f0f7ff; border-left: 5px solid #0055A4; padding: 15px; vertical-align: top;&amp;quot; | '''Complete Workflow'''&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;From geometry definition to final parameter identification in a seamless environment.&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; background: #f0f7ff; border-left: 5px solid #0055A4; padding: 15px; vertical-align: top;&amp;quot; | '''Ease of Use'''&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Intuitive interface designed by and for experimentalists to minimize setup time.&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50%; background: #f0f7ff; border-left: 5px solid #0055A4; padding: 15px; vertical-align: top;&amp;quot; | '''High Accuracy'''&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;State-of-the-art algorithms for precise damping and frequency estimation.&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; background: #f0f7ff; border-left: 5px solid #0055A4; padding: 15px; vertical-align: top;&amp;quot; | '''Native Integration'''&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Fully compatible with OROS analyzers for real-time and post-analysis sync.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Software Modules ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-collapse: separate; border-spacing: 10px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%; background:#fff; border:1px solid #eee; border-top: 5px solid #0055A4; padding:15px; border-radius:5px; text-align:center; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:modal_geometry.png|64px|link=Modal_Geometry]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Modal_Geometry|Geometry]]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;Define your structure with nodes, lines, and surfaces.&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:33%; background:#fff; border:1px solid #eee; border-top: 5px solid #0055A4; padding:15px; border-radius:5px; text-align:center; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:data_acquisition.png|64px|link=Modal_Data_Acquisition]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Modal_Data_Acquisition|Acquisition]]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;Setup channels, impact hammer, or shaker tests.&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:33%; background:#fff; border:1px solid #eee; border-top: 5px solid #0055A4; padding:15px; border-radius:5px; text-align:center; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:signal_processing.png|64px|link=Modal_Signal_Processing]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Modal_Signal_Processing|Processing]]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;Frequency Response Functions (FRF) and Coherence.&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%; background:#fff; border:1px solid #eee; border-top: 5px solid #0055A4; padding:15px; border-radius:5px; text-align:center; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:ODS_EMA_OMA.png|64px|link=Modal_ODS_and_Modal(EMA-OMA)_identification]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Modal_ODS_and_Modal(EMA-OMA)_identification|Identification]]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;Extract Modal Parameters: EMA, OMA, and ODS.&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:33%; background:#fff; border:1px solid #eee; border-top: 5px solid #0055A4; padding:15px; border-radius:5px; text-align:center; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Mac-comac.png|64px|link=Modal_MAC_and_COMAC]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Modal_MAC_and_COMAC|Validation]]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;MAC and COMAC for model validation and comparison.&amp;lt;/small&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:33%; background:#fff; border:1px solid #eee; border-top: 5px solid #0055A4; padding:15px; border-radius:5px; text-align:center; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:structural-B-256.png|64px|link=Modal_Import_Export]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Modal_Import_Export|Import / Export]]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;Universal file formats (UFF), Excel, and reporting.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
=== Learning &amp;amp; Support ===&lt;br /&gt;
* [[Modal_First_steps|'''First Steps Guide''']] - Getting started with OROS Modal.&lt;br /&gt;
* [[Modal_practical|'''Tutorials''']] - Hands-on exercises and case studies.&lt;br /&gt;
* [[Tutorial_ODS_modal|'''ODS Tutorial''']] - Learning Operating Deflection Shapes.&lt;br /&gt;
* [[Modal_Shortcuts|'''Keyboard Shortcuts''']] - Improve your productivity.&lt;br /&gt;
* [[Modal Theorical FAQ|'''Theoretical FAQ''']] - Deep dive into modal theory.&lt;br /&gt;
&lt;br /&gt;
=== Technical Notes ===&lt;br /&gt;
* [https://orossas.sharepoint.com/:w:/g/support/EV_mN0vQawNFj3fXv5Nt1iABrhqt3NO0DdSJ1vWj8xhibA?e=bjYUMo Algorithm Comparison]: Comparison of identification methods inside Modal.&lt;br /&gt;
* [https://orossas.sharepoint.com/:w:/g/support/EV_i4LElZ-pIvugufhQ4CI4BoxIprh8Sqn3LGR7EWkKCjg?e=qgeTC MIF Information]: Mode Indicator Function details.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Access the latest version and installation guides: [[Modal_Install|'''Download &amp;amp; Install Modal''']]&lt;br /&gt;
&lt;br /&gt;
== Video Tutorials ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 20px; justify-content: flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Youtube&amp;gt;https://youtu.be/-oDzxiFT8yQ?si=ZqHJE67Qs0pbOYwc&amp;lt;/Youtube&amp;gt;&lt;br /&gt;
&amp;lt;Youtube&amp;gt;https://youtu.be/knLnt1Ck0yc?si=NHrL5oTd-LQUpgJl&amp;lt;/Youtube&amp;gt;&lt;br /&gt;
&amp;lt;Youtube&amp;gt;https://youtu.be/3PPqbFQaKv4&amp;lt;/Youtube&amp;gt;&lt;br /&gt;
&amp;lt;Youtube&amp;gt;https://youtu.be/LK5CvJcJdtk&amp;lt;/Youtube&amp;gt;&lt;br /&gt;
&amp;lt;Youtube&amp;gt;https://youtu.be/tr4JLknO0-g&amp;lt;/Youtube&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Modal]]&lt;br /&gt;
[[Category:WikiOros]]&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=NVGate&amp;diff=12880</id>
		<title>NVGate</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=NVGate&amp;diff=12880"/>
		<updated>2026-05-04T12:14:36Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: Reverted edits by LaurentM OROS (talk) to last revision by Lmagimel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|title=NVGate – Noise &amp;amp; Vibration Analysis Software | Official Documentation&lt;br /&gt;
|keywords=NVGate, NVGate V17, noise and vibration software, FFT analyzer software, vibration analysis, acoustic analysis, signal processing software, order analysis, octave analyzer, sound level meter, data acquisition software, OROS software, NVGate manual, NVGate documentation, NVGate tutorial&lt;br /&gt;
|description=Official NVGate documentation: FFT analysis, order analysis, octave, acoustic measurement and more. Complete user guide for NVGate V17 – the professional noise and vibration software by OROS.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; clear:right; margin:0 0 20px 28px; width:280px; border-radius:12px; overflow:hidden; background:#fff; box-shadow:0 4px 18px rgba(0,0,0,0.13); font-size:0.95em; line-height:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- ── Header ── --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:linear-gradient(160deg,#1e3a5f,#2a5f8f); padding:22px 16px; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:general-B-256.png|60px]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:#fff; font-size:1.18em; font-weight:bold; margin-top:10px; letter-spacing:.02em;&amp;quot;&amp;gt;NVGate&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:rgba(255,255,255,0.65); font-size:0.82em; margin-top:3px;&amp;quot;&amp;gt;Noise &amp;amp;amp; Vibration Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:12px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background:#f0a500; color:#fff; font-size:0.75em; font-weight:bold; padding:3px 14px; border-radius:20px; letter-spacing:.05em;&amp;quot;&amp;gt;V17 — Latest release&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Screenshot ── --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2f7; text-align:center; padding:14px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:nvGate 7 550pxls.jpg|250px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Info rows ── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; width:42%; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Developer&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | [http://www.OROS.com Oros Digital]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Type&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | [https://en.wikipedia.org/wiki/Data_acquisition DAQ], [https://en.wikipedia.org/wiki/Signal_processing Signal processing], [https://en.wikipedia.org/wiki/Noise Noise] &amp;amp;amp; [https://en.wikipedia.org/wiki/Vibration Vibration], [https://en.wikipedia.org/wiki/Spectrum_analyzer Spectrum analyser]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8;&amp;quot; | First release&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8;&amp;quot; | 2001&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | OS&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Windows 11 / 10 &amp;amp;nbsp;([[PC_Requirements|requirements]])&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Language&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8;&amp;quot; | English &amp;amp;middot; [https://www.toyo.co.jp/mecha/products/detail/oros-fft.html Japanese] &amp;amp;middot; Russian&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8;&amp;quot; | Licence&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8;&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6;&amp;quot; | Website&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px;&amp;quot; | [http://www.oros.com oros.com]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Footer / CTA ── --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f4f7fb; border-top:1px solid #e4eaf2; padding:14px 16px; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_V17:_Install_Process|&amp;lt;span style=&amp;quot;display:inline-block; background:#f0a500; color:#fff; font-weight:bold; padding:8px 22px; border-radius:6px; font-size:0.92em;&amp;quot;&amp;gt;&amp;amp;#x2B07; Download V17&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:8px; font-size:0.83em;&amp;quot;&amp;gt;[[FFT_Spectrum_Analyzer_Multipurpose#Full_technical_support|Contact support]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════&lt;br /&gt;
     BANNIÈRE V17&lt;br /&gt;
════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:linear-gradient(135deg, #1e3a5f 0%, #2a6099 100%); border-radius:10px; padding:22px 28px; margin:20px 0; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:inline-block; background:#f0a500; color:#fff; font-size:0.72em; font-weight:bold; letter-spacing:.1em; padding:3px 10px; border-radius:20px; margin-bottom:8px;&amp;quot;&amp;gt;NOW&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:#fff; font-size:1.45em; font-weight:bold; line-height:1.2em;&amp;quot;&amp;gt;NVGate V17 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;color:rgba(255,255,255,0.75); font-size:0.9em; margin-top:5px;&amp;quot;&amp;gt;Enhanced analysis capabilities &amp;amp;amp; new features&amp;lt;/div&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:flex; flex-direction:column; gap:8px; align-items:flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f0a500; border-radius:6px; padding:9px 18px; font-weight:bold; font-size:0.9em;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;[[NVGate_V17:_Install_Process|&amp;amp;#x2B07; Update to V17]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.88em;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:rgba(255,255,255,0.9);&amp;quot;&amp;gt;&amp;amp;#x25B8; [[NVGate_V17:_Release_note|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;Release Notes&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.88em;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:rgba(255,255,255,0.9);&amp;quot;&amp;gt;&amp;amp;#x25B8; [[NVGate_Installation_and_Connection|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;First Installation&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════&lt;br /&gt;
     GETTING STARTED&lt;br /&gt;
════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#fff; border:1px solid #d0dae6; border-top:4px solid #1e3a5f; border-radius:0 0 8px 8px; padding:18px 24px; margin:4px 0 24px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:1.05em; color:#1e3a5f; margin-bottom:14px;&amp;quot;&amp;gt;&amp;amp;#x1F3C1;&amp;amp;nbsp; Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.3em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;#x25B8;&amp;amp;nbsp; [[FFT_Spectrum_Analyzer_Multipurpose|OROS analyzer overview]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;#x25B8;&amp;amp;nbsp; [[NVGate_Software_overview|First Start With NVGate]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;#x25B8;&amp;amp;nbsp; [https://youtube.com/playlist?list=PLwB9Ae8PGEbP-aPxWtOo1m59tingiiBIq&amp;amp;si=aLkUQ4Sz8vvnqo1g NVGate Video Tutorials]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Complete documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #bbc8d4; border-radius:8px; overflow:hidden; margin:18px 0; box-shadow:0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border-collapse:collapse; width:100%; table-layout:fixed;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; style=&amp;quot;background:#1e3a5f; color:#fff; padding:6px 14px; font-size:0.85em; font-weight:bold; letter-spacing:.1em;&amp;quot; |&lt;br /&gt;
&amp;amp;#9658;&amp;amp;nbsp; DOCUMENTATION&lt;br /&gt;
|- style=&amp;quot;background:#eef2fb; text-align:center; font-size:0.92em;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; width:12.5%; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Home_Tab|Home]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Acquisition_Tab|Acquisition]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Analysis_Tab|Analysis]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Data|Data]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Display|Display]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Report|Report]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Automation|Automation]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Preferences|Preferences]]&lt;br /&gt;
|- style=&amp;quot;background:#fff; vertical-align:top; font-size:0.92em;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:GoToR.png|x32px|link=NVGate_GoToResult]]&amp;amp;nbsp;[[NVGate_GoToResult|GoToResult]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid #eee; margin-top:4px; padding-top:4px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:PA_icone.png|x22px|link=NVGate_Post_Analysis]] [[NVGate_Post_Analysis|Post Analyze]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Save_i.png|x22px|link=NVGate_Ribbons:_Home_Tab#Save_group]] [[NVGate_Ribbons:_Home_Tab#Save_group|Save setup]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:connect_wiz.png|x22px|link=NVGate_Connection_Wizard]] [[NVGate_Connection_Wizard|Connect Inputs]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Player]] [[NVGate_Player|Player]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_255.png|x22px|link=NVGate_Transducer_and_Calibration]] [[NVGate_Transducer_and_Calibration|Transducer &amp;amp; Cal.]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Virtual_Input]] [[NVGate_Virtual_Input|Virtual Input]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Output_Signals]] [[NVGate_Output_Signals|Output Signals]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Event_definition]] [[NVGate_Event_definition|Event definition]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Filter_Builder]] [[NVGate_Filter_Builder|Filter]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Tachometer]] [[NVGate_Tachometer|Tachometer]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Front_End]] [[NVGate_Front_End|Front End]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Recorder]] [[NVGate_Recorder|Recorder]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_FFT]] [[NVGate_FFT|FFT]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Synchronous_Order_Analysis]] [[NVGate_Synchronous_Order_Analysis|SOA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Time_Domain_Analysis]] [[NVGate_Time_Domain_Analysis|TDA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Octave_Analyzer]] [[NVGate_Octave_Analyzer|1/n Octave]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Overall_Acoustic_-_Sound_Level_meter]] [[NVGate_Overall_Acoustic_-_Sound_Level_meter|OVA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Monitor_Plug_In]] [[NVGate_Monitor_Plug_In|Monitor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_13.png|x22px|link=NVGate_Waterfall]] [[NVGate_Waterfall|Waterfall]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Time_windows|Force / response windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Torsional|Torsional Analysis]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:dataset_i.png|x22px|link=NVGate_dataset_management]] [[NVGate_dataset_management|Dataset management]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:edit_icone.png|x22px|link=NVGate_Edit_Measurement]] [[NVGate_Edit_Measurement|Edit Measurement]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Data_download_2022.PNG|x22px|link=Disk(Hard-drive)_management]] [[Disk(Hard-drive)_management|Disk management]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_503.jpg|x22px|link=NVGate_Export/import]] [[NVGate_Export/import|Export / Import]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:OR10_stand_alone.png|x22px|link=NVGate_OR10_Stand_alone]] [[NVGate_OR10_Stand_alone|OR10 Stand Alone]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_D-Rec|D-Rec : record without PC]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:ADD_re.png|x22px|link=NVGate_Ribbons:_Display]] [[NVGate_Ribbons:_Display|Add / Remove windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_467.png|x22px|link=NVGate_Marker]] [[NVGate_Marker|Marker]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_13.png|x22px|link=NVGate_Waterfall#Waterfall_Display]] [[NVGate_Waterfall#Waterfall_Display|Waterfall Display]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[NVGate_Report|Report]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:Reports_Tools_Ribbons_71.jpg|x22px|link=NVGate_Macro]] [[NVGate_Macro|Macro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_134.png|x22px|link=NVGate_Sequence]] [[NVGate_Sequence|Sequencer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CP.png|x22px|link=NVGate_Control_Panel]] [[NVGate_Control_Panel|Control Panel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_162.png|x22px|link=NVGate_Mask_And_Alarm]] [[NVGate_Mask_And_Alarm|Mask And Alarm]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:preference.png|x22px|link=NVGate_User_Preferences]] [[NVGate_User_Preferences|User Preferences]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:properties.png|x22px|link=NVGate:_Properties]] [[NVGate:_Properties|Properties]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- ═══ ADDITIONAL RESOURCES ═══ --&amp;gt;&lt;br /&gt;
==Additional ressources==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex; gap:12px; margin:0 0 20px; flex-wrap:wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:155px; border:1px solid #c8ccd1; border-left:4px solid #1e3a5f; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#1e3a5f; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Workspace View&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:1.8em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_Architecture|Architecture]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ASB_.png|200px|link=NVGate_Analyzer_Setting_Browser_(ASB)]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Analyzer_Setting_Browser_(ASB)|Analyzer Setting Browser]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Control_pannel.png|200px|link=NVGate_Control_Panel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Control_Panel|Control Panel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Project_manager.png|200px|link=NVGate_Project_manager]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Project_manager|Project Manager]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Status_bar|Status bar]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:190px; border:1px solid #c8ccd1; border-left:4px solid #4a6fa5; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#4a6fa5; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Display - Windows - Trace&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.2em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_Display|Display Overview]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Integrate_-_Differentiate_-_Unit|Integrate / Differentiate - Unit (RMS, pk, PSD...)]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Operator|Graphical Operator]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Zoomed_signal]] [[NVGate_Zoomed_signal|Player Zoomed signal]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:190px; border:1px solid #c8ccd1; border-left:4px solid #4a6fa5; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#4a6fa5; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Signal Processing Notes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.2em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_CBT_principle_and_settings|CBT principle and settings]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_SOA_and_CBT_techniques|SOA vs CBT]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Envelope_analysis|Envelope Analysis]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_time_shift_resampling|Ext synch: time shift resampling]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[User_note:_FFT_averaging|FFT Averaging]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate:_How_do_I|NVGate: How do I?]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:165px; border:1px solid #c8ccd1; border-left:4px solid #4a6fa5; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#4a6fa5; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Appendix&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.2em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_Formula_Computation|NVGate FFT Computation]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_filter_formula_appendix|Filter: curve and formula]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Weighting_Windows_appendix|Weighting Windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_time_shift_resampling|Ext synch: time shift resampling]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Specification|Specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Shortcuts|Shortcuts]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Glossary|Glossary]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==NVGate Add on==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A DLL is needed for NVDrive. It is downloadable in the Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package [https://www.microsoft.com/en-us/download/details.aspx?id=26999 here].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex; flex-wrap:wrap; gap:16px; margin:22px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:modbus-drawing.png|140px|link=Modbus_TCP/IP_to_NVGate|Modbus TCP/IP]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Modbus_TCP/IP_to_NVGate|Modbus TCP/IP]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Inject Modbus registers as DC simulated channels&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Manual_-_Tach_Extract_08.gif|140px|link=External_Tools:_TachTool|TachTool]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[External_Tools:_TachTool|TachTool]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Extract tachometer reference from a recorded signal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Batch post process.png|140px|link=NVGate_BatchPostProcess_tool|BatchPostProcess]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_BatchPostProcess_tool|BatchPostProcess]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Automate post-processing on multiple files&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Manual_-_Rosette_04.gif|140px|link=External_tools:_Rosette_computation|Rosette computation]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[External_tools:_Rosette_computation|Rosette computation]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Compute principal stresses from strain gauge rosettes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:RT60_05.png|140px|link=RT60_Calculator|RT60 Calculator]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[RT60_Calculator|RT60 Calculator]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Measure acoustic reverberation time&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Auto_rep.png|140px|link=NVGate_Tools:_AutoReport|AutoReport]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Tools:_AutoReport|AutoReport]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Generate automated production test reports&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:EditSignal_05.png|140px|link=NVGate_Tools:_EditSignal|EditSignal]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Tools:_EditSignal|EditSignal]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Edit and synthesize recorded time signals&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:candbc.png|140px|link=NVGate_Tools:_CanBus_Import_.dbc|CanBus Import]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Tools:_CanBus_Import_.dbc|CanBus Import]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Import CAN bus variables from .dbc files&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:IRIG.png|140px|link=NVGate_IRIG_Marker|IRIG Marker]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_IRIG_Marker|IRIG Marker]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Synchronize measurements with IRIG-B time code&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:HP_analyzer.png|140px|link=NVGate_HP_Spectrum_Analyzer|HP Spectrum Analyzer]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_HP_Spectrum_Analyzer|HP Spectrum Analyzer]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Emulate HP/Agilent spectrum analyzer display modes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:gps_navilock.jpg|140px|link=NVGate_DC_Simulated_Manager#GPS|GPS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_DC_Simulated_Manager#GPS|GPS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Log GPS position as DC simulated channels&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:display_torsion.PNG|140px|link=Display_Torsion_ODS|Display Torsion ODS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Display_Torsion_ODS|Display Torsion ODS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Visualize torsional operational deflection shapes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:weather.png|140px|link=NVGate_DC_Simulated_Manager#Weather_station|Weather station]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_DC_Simulated_Manager#Weather_station|Weather station]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Integrate Davis weather station data as DC channels&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Axis_WholeBody.png|140px|link=Human_Vibration|Human Vibration]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Human_Vibration|Human Vibration]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Whole-body &amp;amp; hand-arm vibration analysis (ISO 2631)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Indicator_diagram_steam_admission.png|140px|link=Addons:PV_Diagram|PV Diagram]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Addons:PV_Diagram|PV Diagram]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Pressure-Volume indicator diagram for engine analysis&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:EVHV_01.gif|140px|link=NVGate_EVHV|EVHV]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_EVHV|EVHV]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Electrical motor &amp;amp; inverter diagnostic solution&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Engine_diag3.png|140px|link=NVGate_Diesel_Engine_Vibration_Solution:_EngineDiag|EngineDiag]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Diesel_Engine_Vibration_Solution:_EngineDiag|EngineDiag]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Diesel engine vibration diagnostic solution&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Sweep.png|140px|link=THD_Sweep_Measurement|THD]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[THD_Sweep_Measurement|THD sweep measurement ]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Total harmonic distortion with a sweep sine measurement&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:11_main_full.png|140px|link=SRS_Tool_—_Shock_Response_Spectrum_Analyser|SRS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[SRS_Tool_—_Shock_Response_Spectrum_Analyser|SRS Tool]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Shock Response Spectrum measurement&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=FFT_Spectrum_Analyzer_Multipurpose&amp;diff=12877</id>
		<title>FFT Spectrum Analyzer Multipurpose</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=FFT_Spectrum_Analyzer_Multipurpose&amp;diff=12877"/>
		<updated>2026-05-04T12:11:11Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: Reverted edits by LaurentM OROS (talk) to last revision by Lmagimel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:WikiOros]]&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=FFT Spectrum analyzer for acoustic and vibration - Modal analysis&lt;br /&gt;
|keywords= FFT analyzer, vibration analyzer, Spectrum analyzer, analyzer acoustic and vibration, Octave analyzer, third octave, FFT analysis software, order tracking measurement, turbomachinery Orbit, fast fourier transform, modal analysis&lt;br /&gt;
|description= OROS portable hardware multichannels Instrument with real time software, easy to operate .&lt;br /&gt;
|image=FFT_analyzer_hardware_2.webp&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
[[File:O4_range Gamme O4 + OR10 + OR35 + OR36 + OR38.png|frame|left|FFT analyzers|alt=Analyzer acoustic vibration multichannel]]&lt;br /&gt;
The OROS series multi-function FFT analyzer is PC-based, high-performance, high reliability and easy to operate. &lt;br /&gt;
&lt;br /&gt;
We have further increased the arithmetic processing speed and increased the real-time analysis capacity to more than 16 times that of the conventional model (OR20 series). An ethernet LAN cable is used as the interface. &lt;br /&gt;
&lt;br /&gt;
In addition, the number of simultaneous recording channels in the frequency range (40 kHz) has been expanded to a maximum of 1000 channels and the dynamic range has been improved to 140 dB. These improvements allow a user to measure time signals over a wide frequency range simultaneously on multiple channels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;width:100%;&amp;quot; &lt;br /&gt;
|style=&amp;quot;background: #0000A0; text-align:center;&amp;quot;|&amp;lt;big&amp;gt;[https://www.oros.com/demo-request/ &amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;Schedule  a  demo]&amp;lt;/big&amp;gt;&lt;br /&gt;
|style=&amp;quot;background: red; text-align:center;&amp;quot;|&amp;lt;big&amp;gt;[https://www.oros.com/quote-request-form/ &amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt; Get a quotation]&amp;lt;/big&amp;gt;&lt;br /&gt;
|style=&amp;quot;background: green; text-align:center;&amp;quot;|&amp;lt;big&amp;gt;[[FFT_Spectrum_Analyzer_Multipurpose#Full_technical_support|&amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;Contact support]]&amp;lt;/big&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery gallery=&amp;quot;&amp;quot; mode=&amp;quot;packed-hover&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;&lt;br /&gt;
File:TWanalyzer2.jpg|alt=Vibration measurement up to 1000 channels|Analyzer Cascade mode&lt;br /&gt;
File:Situation auto hammer pc.jpg|alt=Hammer test on automative in anechoic room|Modal FRF measurement&lt;br /&gt;
File:Auto anechoic chamber2.webp|alt=Sound intensiyt measurement in anechoic room|Acoustic Sound intensity&lt;br /&gt;
File:Turbo orbit.JPG|alt=Turbomachinery orbit vibration measurement|Vibration on trubomachinery&lt;br /&gt;
File:Or34 situation.jpg|alt=NVH measurement on a car|NVH automotive measurement&lt;br /&gt;
File:Airfrance.jpg|alt=Acoutic measurement with octave anlyzer in a plane|In flight measurement&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Main Features==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* From 2-32 channels&lt;br /&gt;
* Synchronous measurements up to 1000ch is possible by combining multiple analyzers (*)&lt;br /&gt;
* Compact and lightweight (4ch model 1.5kg, 10ch model 3.0kg) &lt;br /&gt;
* Achieves high-speed communication with a PC through an ethernet LAN interface&lt;br /&gt;
* Equipped with an output channel as a standard &lt;br /&gt;
* Built-in internal battery as a standard&lt;br /&gt;
* Record, Fast Fourier Transform analysis, octave analysis, and tracking analysis can be performed simultaneously at high sampling frequencies&lt;br /&gt;
* Realtime measurements and post-analysis can be performed with the same software platform ([[NVGate]])&lt;br /&gt;
* In addition to sound and vibration, strain and temperature can be measured at the same time using XPODS  (**)&lt;br /&gt;
* CAN-bus module compatible (***)&lt;br /&gt;
* Recording is possible with analyzer in standalone mode or in conjunction with a PC (****)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(*) Synchronous measurements that combine multiple analyzers is possible only for TW OR35 / TW OR36 / TW OR38.&lt;br /&gt;
&lt;br /&gt;
(**) The strain / temperature module(XPOD) can be installed only on TW OR35 / TW OR36 / TW OR38.&lt;br /&gt;
&lt;br /&gt;
(***) CAN-bus module can be installed only on OR10/ TW OR35 / TW OR36 / TW OR38.&lt;br /&gt;
&lt;br /&gt;
(****) Stand-alone measurements are possible only with SSD-equipped models OR10 / TW OR35 / TW OR36 / TW OR38.&lt;br /&gt;
&lt;br /&gt;
==Introducing the hardware==&lt;br /&gt;
[[File:hardware.png|right|Spectrum analyzer|alt=OROS instrument analyzer for noise and vibration]]&lt;br /&gt;
===Small and lightweight===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OR10-8ch model: 0.8kg&lt;br /&gt;
&lt;br /&gt;
O4: 4ch model: 0.5kg&lt;br /&gt;
&lt;br /&gt;
OR35 TW: 10ch model: 3.0kg&lt;br /&gt;
&lt;br /&gt;
OR36 TW: 16ch model: 5.2kg&lt;br /&gt;
&lt;br /&gt;
OR38 TW: 32ch model: 8.2kg&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ethernet LAN interface===&lt;br /&gt;
[[image:laninterface.PNG|right|FFT analyzer ethernet|alt=Back of FFT analyzer : ethernet connection for PC]]&lt;br /&gt;
Achieves high-speed communication with a PC through an ethernet LAN interface&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Built-in battery===&lt;br /&gt;
OR10/ OR35/ TW OR36 / TW OR38: Models have a built-in battery.&lt;br /&gt;
&lt;br /&gt;
OR10 can be operated by battery for 4hours&lt;br /&gt;
&lt;br /&gt;
OR35 can be operated by battery for 3 hours.&lt;br /&gt;
&lt;br /&gt;
TW OR36 / TW OR38 can be operated by battery for 2 hours.&lt;br /&gt;
&lt;br /&gt;
04 operate with battery PC.&lt;br /&gt;
&lt;br /&gt;
===External battery===&lt;br /&gt;
[[File:external battery.PNG|200px|right|external battery on analyzer|alt=External battery on spetrum analyzer]]&lt;br /&gt;
&lt;br /&gt;
We provide a compact and lightweight external battery that can be installed on all models.&lt;br /&gt;
&lt;br /&gt;
Can be used for up to 8 hours with one external battery.&lt;br /&gt;
&lt;br /&gt;
Can be stored in a &amp;quot;PC integrated carrying case&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Synchronous Measurement Of Up To 1000 Channels is Possible by Combining Multiple Analyzers===&lt;br /&gt;
(TW OR35 / TW OR36 / TW OR38 only)&lt;br /&gt;
&lt;br /&gt;
High-precision synchronous measurements (0.2 ° @ 20kHz) are possible by simply connecting each analyzer using a general-purpose LAN cable. Function measurements can be taken with the hammer connected to the third unit in the chain and the accelerometers connected to each unit. Tracking analysis can be completed with the accelerometers connected to each unit while using a tachometer connected to the second unit in the chain.&lt;br /&gt;
&lt;br /&gt;
[[File:teamworkanalyzer.png|700px|cascade mode]]&lt;br /&gt;
&lt;br /&gt;
=== Measure From Sound / Vibration and Strain Gauge / Temperature ===&lt;br /&gt;
(OR35 / TW OR36 / TW OR38 only)&lt;br /&gt;
[[File:Usersmanual_32.jpg|200px|right|Conditioner on analyzer|alt=Temperature and straing conditionner]]&lt;br /&gt;
By mounting a [[XPod_Bridge_-_Strain_gauge|strain gauge conditioner]] and [[NVGate_X-Pod:_Temperature_probe_conditioner|thermocouple conditioner]] on the Oros FFT analyzer, it is possible to measure strain and temperature data in addition to sound and vibration data.&lt;br /&gt;
&lt;br /&gt;
Thermocouple amplifier: Supports types J, K, T, N, E (with temperature compensation)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CAN-bus Module Available ===&lt;br /&gt;
[[File:Can_Bus.jpg|150px|right|Can bus measurement|alt=Can bus to add on OROS instrument]]&lt;br /&gt;
(OR10/ TW OR35 / TW OR36 / TW OR38 only)&lt;br /&gt;
&lt;br /&gt;
By using the [[NVGate_Can_BUS|CAN-bus module]], tracking analysis can be performed using information such as the engine speed flowing from the CAN-bus. By using this function, tracking analysis can be performed without using a tachometer. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Recording is possible without the use of a PC by using the FFT analyzer in stand alone mode ===&lt;br /&gt;
(OR35 / TW OR36 / TW OR38 only)&lt;br /&gt;
&lt;br /&gt;
[[File:d_rec.PNG|150px|right|Data acquisition recorder|alt=Vibration time signal Measurement without PC]]&lt;br /&gt;
The FFT analyzer is equipped with a [[NVGate_D-Rec|record-only button]]. Simply select a predefined measurement setup and press the record button to record onto the FFT analyzer alone without the use of a PC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the back of the Fast Fourier Transform Spectrum Analyzer Multipurpose is equipped with an audio terminal and power supply. It is possible to record audio data while also measuring the time signal. The analyzer also can supply power to required sensors, such as proximity probes, tachometers and DC sensors.  &lt;br /&gt;
&lt;br /&gt;
[[File:FFT_analyzer.jpg|600px|Back of the hardware|alt=all the plug available on the backside of instrment]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software Introduction==&lt;br /&gt;
&lt;br /&gt;
*Easy-to-use interface&lt;br /&gt;
*Real-time measurement / post-analysis can be performed with the same software platform (NVGate)&lt;br /&gt;
*One-click report creation function&lt;br /&gt;
&lt;br /&gt;
===Start the Measurement Quickly and Easily===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can start measuring immediately by using the quick function provided in the  OROS FFT analyzer mult function. This is completed by defining the number of input channels in the channel field and the measurement/analysis content in the show results area.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Oros series FFT spectrum analyzer multifunction uses an interface similar to the ribbon interface used by Microsoft Office. All menus are accessible via the ribbon interface, making it easy to change measurement settings.&lt;br /&gt;
&lt;br /&gt;
[[File:home3.PNG|800px|software ribbon|alt=NVgate ribbon technology]]&lt;br /&gt;
&lt;br /&gt;
===One-click Setting Function===&lt;br /&gt;
With the Oros series multi-purpose FFT analyzer, you can display related measurement condition settings by double-clicking on the measurement screen. For example, if you double-click on the FFT analysis screen, the dialog for setting the measurement conditions for FFT analysis will be displayed on the screen as shown below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:FFT_analyzer_spectrum.png|500px|FFT spectrum|alt=Parameters easy to change]]&lt;br /&gt;
&lt;br /&gt;
===Control Panel===&lt;br /&gt;
In addition, the OROS FFT spectrum analyzer is equipped with a control panel function that allows users to save frequently used measurement settings for quick access. By using this function, all settings can be changed on the [[NVGate_Control_Panel|control panel]]. For example, the following is the setting screen for a hammer test. By saving the input settings, threshold settings, and FFT analysis settings to the control panel as shown below, it is possible to make all the necessary settings quickly by only using the control panel.&lt;br /&gt;
&lt;br /&gt;
[[File:control pannel_test.png|700px|Software FFT settings|alt=Control easily the software]]&lt;br /&gt;
&lt;br /&gt;
===Various filters can be applied to recorded signals &amp;amp; FFT analysis results===&lt;br /&gt;
Four types of filters: Low-pass filter, high-pass filter, band-bus filter, and band-stop filter, can be applied to the results of recorded signal and FFT analysis. By using a [[NVGate_Filter_Builder|filter]], it is possible to remove abnormal noise components from the recorded signal and perform processing such as reproducing the extracted abnormal noise components.&lt;br /&gt;
&lt;br /&gt;
[[File:filter_fft.png|600px|Filter analyzer]]&lt;br /&gt;
&lt;br /&gt;
===Extract arbitrary order components from the color spectrum graph in real time===&lt;br /&gt;
&lt;br /&gt;
Any order component can be extracted in real time from the color spectrum graph.&lt;br /&gt;
&lt;br /&gt;
[[File:extraction.jpg|Synchronous order analysis extraction|alt=order extraction on vibration software]]&lt;br /&gt;
&lt;br /&gt;
Easy-to-read Layout&lt;br /&gt;
&lt;br /&gt;
The area for arranging windows is called a layout.&lt;br /&gt;
The OROS multi function FFT analyzer can create up to 16 layouts per project. You can easily arrange your windows by using the layout function. And your windows will open the same way each time. &lt;br /&gt;
&lt;br /&gt;
It is possible to display up to 32 screens in one layout.&lt;br /&gt;
&lt;br /&gt;
Up to 512 windows (= 16 x 32) can be displayed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Layout utilization example:'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Layout 1''': Record waveform, FFT analysis result, order ratio analysis result displayed&lt;br /&gt;
&lt;br /&gt;
[[File:Fft_extraction_data.jpg|Order extraction|alt=Recorder and FFT together]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Layout 2''': Display 3D frequency analysis results and 3D order ratio analysis results&lt;br /&gt;
&lt;br /&gt;
[[File:waterfall_extract_order.jpg|3d display order spectrum |alt=NVGate software on line measurement]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Layout 3''': Display 3D '''octave analyzer''' analysis results&lt;br /&gt;
&lt;br /&gt;
[[File:octave waterfall.jpg|Octave acoustic measurement 3d display|alt=Acoustic measurement with octave]]&lt;br /&gt;
&lt;br /&gt;
===Easy operation &amp;lt;Graph layout selection button&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can easily arrange windows just by selecting the grid menu.&lt;br /&gt;
&lt;br /&gt;
[[File:gridwindows_PNG.PNG|NVGate icone|alt=Grid icone]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Batch copy of measurement data with one menu. Numerical data can be transferred to Excel all at once.&lt;br /&gt;
&lt;br /&gt;
[[File:excel_report.jpg|400px|FFT spectrum Report function|alt=export your data]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data measured at different times can be overwritten by dragging which allows for easily comparing measurement data.&lt;br /&gt;
&lt;br /&gt;
[[File:drag_drop_report.jpg|Software NVGate]]&lt;br /&gt;
&lt;br /&gt;
===One-click report creation function===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Simply click the report button located on the ribbon interface to create a [[NVGate_Report|report]] file containing the current measurement results.&lt;br /&gt;
&lt;br /&gt;
[[File:allwindows_.PNG|NVGate report|alt=report all windows]]&lt;br /&gt;
&lt;br /&gt;
• The content of the report is customizable. Customize it to the format that best suits your needs.&lt;br /&gt;
&lt;br /&gt;
[[File:report-customize.jpg|500px|customize FFT analyzer software report|alt=Post analysis vibration software]]&lt;br /&gt;
&lt;br /&gt;
===Measurement data search function===&lt;br /&gt;
[[File:pc cloud.PNG|right|Data stored|alt=cloud vibration data]]&lt;br /&gt;
Various information (meta-data) can be added when saving measurement data.&lt;br /&gt;
You then can search for measurement data and projects based on the added information. &lt;br /&gt;
&lt;br /&gt;
Filter:&lt;br /&gt;
* Project name &lt;br /&gt;
* Measurement date  and time&lt;br /&gt;
* Measurement conditions &lt;br /&gt;
* Measurement target &lt;br /&gt;
* Measurement site &lt;br /&gt;
* User&lt;br /&gt;
[[File:filter_project.PNG|550px|meta data on noise and vibration software NVGate|alt=Acoustic and vibration search function]]&lt;br /&gt;
&lt;br /&gt;
===Fail judgment function as standard===&lt;br /&gt;
The [https://youtu.be/kx2HbcvfG_w pass / fail feature] of NVGate can be performed automatically after setting the desired bounds. &lt;br /&gt;
&lt;br /&gt;
In the example below, a dialog is displayed when the product fails, but it is also possible to output a contact signal instead of the dialog.&lt;br /&gt;
&lt;br /&gt;
[[File:fail_test.JPG|Pass/fail test on resonnance frequency impact hammer test|alt=Failed pass test on resonnance frequency test]]&lt;br /&gt;
&lt;br /&gt;
===Automate post-analysis processing===&lt;br /&gt;
&lt;br /&gt;
The same processing can be continuously performed for record files measured multiple times. By using this function, it is possible to automate the generation of reports, and it is possible to generate the same number of post-analysis results and EXCEL-based reports as record files with one click. Processing that used to take more than a week can now be done in a few hours.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:BPP2.jpg|Post processing acoustic measurement batch |alt=Offline measurement]]&lt;br /&gt;
&lt;br /&gt;
==specification==&lt;br /&gt;
===Main specifications===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable style=&amp;quot;width:100%;&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:16%|&lt;br /&gt;
! style=&amp;quot;width:21%|O4&lt;br /&gt;
! style=&amp;quot;width:21%|OR35&lt;br /&gt;
! style=&amp;quot;width:21%|OR36&lt;br /&gt;
! style=&amp;quot;width:21%|OR38&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6 style=&amp;quot;text-align:center;&amp;quot; | Dynamical Input channel&lt;br /&gt;
|-&lt;br /&gt;
! Number of analysis channels &lt;br /&gt;
| 2, 4 &lt;br /&gt;
| 6,  10 &amp;lt;br&amp;gt;  (Select Analysis or tachometer on 2 channels)&lt;br /&gt;
| 4, 8, 12, 16&lt;br /&gt;
| 8, 16, 24, 32&lt;br /&gt;
|-&lt;br /&gt;
! Terminal shape&lt;br /&gt;
| colspan=5| BNC&lt;br /&gt;
|-&lt;br /&gt;
!Input coupling and sensor support	&lt;br /&gt;
|colspan=5| Compatible with AC, DC / ICP (sensor with built-in amplifier) ​​and TEDS&lt;br /&gt;
|-&lt;br /&gt;
!Cutoff frequency	&lt;br /&gt;
|colspan=5| - 3dB at AC cutoff frequency 0.35Hz	&lt;br /&gt;
|-&lt;br /&gt;
! Input voltage range&lt;br /&gt;
|colspan=5| +/- 100mV to +/- 40V (auto range function)&lt;br /&gt;
|-&lt;br /&gt;
! Maximum voltage&lt;br /&gt;
|colspan=5| 60V&lt;br /&gt;
|-&lt;br /&gt;
!Anti-Aliasing filter &lt;br /&gt;
|colspan=5| 400dB / OCT	&lt;br /&gt;
|-&lt;br /&gt;
!Input impedance&lt;br /&gt;
|colspan=5| 1MΩ &amp;lt;100pF&lt;br /&gt;
|-&lt;br /&gt;
!A / D converter	&lt;br /&gt;
|colspan=5| 24-bit	&lt;br /&gt;
|-&lt;br /&gt;
!Dynamic range&lt;br /&gt;
|colspan=5| &amp;gt;140dB&lt;br /&gt;
|-&lt;br /&gt;
!Channels-to-channels phase accuracy&lt;br /&gt;
|colspan=5| ± 0.02 ° (10V, 20kHz range)&lt;br /&gt;
|-&lt;br /&gt;
!Input filter		&lt;br /&gt;
|colspan=5| Acoustic A, C, Z, low pass, high pass, band pass, integrator, differentiator, time axis integration function&lt;br /&gt;
|-&lt;br /&gt;
!Sampling frequency of the signal	&lt;br /&gt;
|colspan=5|Select from 13 ranges between 102.4kHz and 2.048kHz.&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6| Tachometer channel (Ext synch channels)&lt;br /&gt;
|-&lt;br /&gt;
!Number of input channels&lt;br /&gt;
|colspan=2|2 channels&lt;br /&gt;
|colspan=2|2 channels (up to 6 channels as an option)&lt;br /&gt;
|-&lt;br /&gt;
!Sampling frequency&lt;br /&gt;
|colspan=5|6.4MHz (counter method)&lt;br /&gt;
|-&lt;br /&gt;
!Voltage range&lt;br /&gt;
|colspan=4|+/- 300mV  40V&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6| DC input&lt;br /&gt;
|-&lt;br /&gt;
!number of input channels&lt;br /&gt;
|colspan=1|none&lt;br /&gt;
|colspan=3|Analysis channel can be switched and used&lt;br /&gt;
|-&lt;br /&gt;
!Voltage range&lt;br /&gt;
|colspan=1|none&lt;br /&gt;
|colspan=3|22 bits, ± 40V, offset DC 100μV or less&lt;br /&gt;
|-&lt;br /&gt;
!Samplingfrequency&lt;br /&gt;
|colspan=1|none&lt;br /&gt;
|colspan=3|15Hz or 12.5Hz&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6|Calibration function&lt;br /&gt;
|-&lt;br /&gt;
!Calibration method&lt;br /&gt;
|colspan=5| Automatic sensitivity calculation by numerical input or reference signal (for position and standard vibration oscillatory meter)&lt;br /&gt;
|-&lt;br /&gt;
!How to use at the time of measurement&lt;br /&gt;
|colspan=5|Select by registered sensor name such as model name and machine number&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6|Trigger function&lt;br /&gt;
|-&lt;br /&gt;
!Trigger type&lt;br /&gt;
|colspan=5|Edge, period, △ RPM, △ level, manual, multi (A or B, A and B, A after B)&lt;br /&gt;
|-&lt;br /&gt;
!Trigger delay&lt;br /&gt;
|colspan=5|Pre- and post-trigger functions&lt;br /&gt;
|-&lt;br /&gt;
!Trigger signal&lt;br /&gt;
|colspan=5|Select from any input channel&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6|Record function&lt;br /&gt;
|-&lt;br /&gt;
!Sampling frequency&lt;br /&gt;
|colspan=5|13 ranges from 102.4kHz to 2.048kHz  possible to select 2 types of range together&lt;br /&gt;
|-&lt;br /&gt;
!A / D converter resolution&lt;br /&gt;
|colspan=5| 24-bit or 16-bit&lt;br /&gt;
|-&lt;br /&gt;
!Hard drive size&lt;br /&gt;
|PC hard drive&lt;br /&gt;
|colspan=1|64 GB SSD&lt;br /&gt;
|colspan=2|128 GB removable SSD hard drive (256GB or 512 GB optional)&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6|FFT analysis performance&lt;br /&gt;
|-&lt;br /&gt;
!Analysis frequency range&lt;br /&gt;
|colspan=1|0.8Hz-100kHz&lt;br /&gt;
|colspan=4|0.8Hz-40kHz&lt;br /&gt;
|-&lt;br /&gt;
!FFT block size&lt;br /&gt;
|colspan=5|256, 512, 1024, 2048, 4096, 8192, 1638&lt;br /&gt;
|-&lt;br /&gt;
!Number of analysis lines&lt;br /&gt;
|colspan=5|101, 201, 401, 801, 1601, 3201, 6401&lt;br /&gt;
|-&lt;br /&gt;
!Zoom analysis&lt;br /&gt;
|colspan=5|2 to 128 times (all channels at the same time)&lt;br /&gt;
|-&lt;br /&gt;
!Overlap setting&lt;br /&gt;
|colspan=5|0-99.99%&lt;br /&gt;
|-&lt;br /&gt;
!Window function&lt;br /&gt;
|colspan=5|Flat Top, Hanning, Humming, Kaiser Vessel, Rectangular, Force / Response&lt;br /&gt;
|-&lt;br /&gt;
!Average mode&lt;br /&gt;
|colspan=5|Time, frequency, fdsa / linear, exponential, peak hold&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6|Analysis / display function&lt;br /&gt;
|-&lt;br /&gt;
!Time series&lt;br /&gt;
|colspan=5|Real-time waveform, record waveform, DC, Max, Min, RMS&lt;br /&gt;
|-&lt;br /&gt;
!FFT analysis&lt;br /&gt;
|colspan=5|Linear power spectrum, average spectrum, PSD, cross spectrum,&lt;br /&gt;
transfer function (H1, H2), copying function&lt;br /&gt;
|-&lt;br /&gt;
!Display color&lt;br /&gt;
|colspan=5|Display color: Arbitrary specification of trace, cursor, background, and grid display colors&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6|Options:&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!colspan=6|Time domain analysis (ORNV-TDA)&lt;br /&gt;
|-&lt;br /&gt;
!Analysis items&lt;br /&gt;
|colspan=5|Monitor display for arbitrary time (msec to day), effective value for arbitrary section, Min, Max, Peak,&lt;br /&gt;
Peak / Peak, RMS, DC, crest factor, Skew, Kurtosis&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6| 1/n octave analysis (ORNV-OCT)&lt;br /&gt;
|-&lt;br /&gt;
!method&lt;br /&gt;
|colspan=5|Digital filter operation on time domain&lt;br /&gt;
|-&lt;br /&gt;
!Analysis band&lt;br /&gt;
|colspan=5|1/1, 1/3, 1/12, 1/24 octave (IEC1260: 1995 Class 1, ANSI S1.11-1986)&lt;br /&gt;
|-&lt;br /&gt;
!Analysis frequency&lt;br /&gt;
|colspan=5|Simultaneous analysis of all channels at 20kHz is possible (DSP option may be required)&lt;br /&gt;
|-&lt;br /&gt;
!Average&lt;br /&gt;
|colspan=5|Fast, Slow, lmpulse, LEQ, constantBT, linear repeat,exponential&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
!colspan=6| Multi-sound level meter [ORNV-OVA]&lt;br /&gt;
|-&lt;br /&gt;
!Operation method&lt;br /&gt;
|colspan=6|Time series signal digital operation&lt;br /&gt;
|-&lt;br /&gt;
!Acoustic weithing&lt;br /&gt;
|colspan=6|Linear, A, C &lt;br /&gt;
|-&lt;br /&gt;
!Measurement &lt;br /&gt;
|colspan=6|Leq, Fast, Slow, lmpulse, average, Peak, Max, Min&lt;br /&gt;
|-&lt;br /&gt;
!Average&lt;br /&gt;
|colspan=6|Fast, Slow, lmpulse, LEQ, constantBT, linear repeat,exponential&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
!colspan=6| Synchronous Order tracking analysis [ORNV-ORD]&lt;br /&gt;
|-&lt;br /&gt;
!Analysis function&lt;br /&gt;
|colspan=5| Instantaneous and average spectrum,phase, order profile and overall.&lt;br /&gt;
|-&lt;br /&gt;
!Maximum rotation speed&lt;br /&gt;
|colspan=5|1,200,000 RPM&lt;br /&gt;
|-&lt;br /&gt;
!Max analysis ordersetting &lt;br /&gt;
|colspan=5|6.25, 12.5, 25, 50, 100, 200, 400&lt;br /&gt;
|-&lt;br /&gt;
!Number of analysis lines&lt;br /&gt;
|colspan=5|25-800&lt;br /&gt;
|-&lt;br /&gt;
!Analysis bandwidth&lt;br /&gt;
|colspan=5|resampling method and fixed sampling method&lt;br /&gt;
|-&lt;br /&gt;
!display&lt;br /&gt;
|colspan=5|Simultaneous display of 3D display and tracking order, simultaneous display of time signal&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!colspan=6| Rotational torsion analysis [ORNV-IVC]&lt;br /&gt;
|-&lt;br /&gt;
!Operation method&lt;br /&gt;
|colspan=5| Digital Frequnecy Voltage converter&lt;br /&gt;
|-&lt;br /&gt;
!Number of analysis channels&lt;br /&gt;
|colspan=2|2ch&lt;br /&gt;
|colspan=3|2ch (up to 6ch as an option)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6| Rotation diagnosis function [ORNV-FFTDiag]&lt;br /&gt;
|-&lt;br /&gt;
!Analysis items&lt;br /&gt;
|colspan=5| Envelope analysis, cepstrum, self-cross function, MAX, MIN, peak detection from block data, simulated tach,  &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!colspan=6| Output Channel&lt;br /&gt;
|-&lt;br /&gt;
!Number of output channels&lt;br /&gt;
|colspan=1| 1ch (lemo conector, include)&lt;br /&gt;
|colspan=1| 2ch&lt;br /&gt;
|colspan=2| 2ch (up to 6ch as an option)&lt;br /&gt;
|-&lt;br /&gt;
!Output waveform&lt;br /&gt;
|colspan=1|Sinus, step sinus, sweep sinus, chirp, multi-sinus, random (pink and white), DC voltage, record signal &lt;br /&gt;
|colspan=3|Sinus, step sinus, sweep sinus, chirp, multi-sinus, random (pink and white), DC voltage, record signal &lt;br /&gt;
|-&lt;br /&gt;
!Digital / Analogic converter&lt;br /&gt;
|colspan=1|24 bits&lt;br /&gt;
|colspan=3|24 bits&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Output voltage&lt;br /&gt;
|colspan=1|+/- 10V&lt;br /&gt;
|colspan=3|+/- 10V&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Output Inpedence&lt;br /&gt;
|colspan=1|50 Ω&lt;br /&gt;
|colspan=3|50 Ω&lt;br /&gt;
|-&lt;br /&gt;
!Frequency range&lt;br /&gt;
|colspan=1|~ 100kHz&lt;br /&gt;
|colspan=3|~ 40kHz&lt;br /&gt;
|-&lt;br /&gt;
!Sweep mode&lt;br /&gt;
|colspan=1|Sweep and step, analyze, trigger and sync, linear and log&lt;br /&gt;
|colspan=3|Sweep and step, analyze, trigger and sync, linear and log&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Synchronization with the analysis &lt;br /&gt;
|colspan=1|Synchronization and free run&lt;br /&gt;
|colspan=3|Synchronization and free run&lt;br /&gt;
|-&lt;br /&gt;
!Output protection&lt;br /&gt;
|colspan=1|Stabilization with time specification and forced stop button&lt;br /&gt;
|colspan=3|Stabilization with time specification and forced stop buttoz&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6|Data&lt;br /&gt;
|-&lt;br /&gt;
!Image and print&lt;br /&gt;
|colspan=5|Image, printing for Windows and user template creation function for Word and Excel&lt;br /&gt;
|-&lt;br /&gt;
!File&lt;br /&gt;
|colspan=5| TXT, UFF, MATLAB, WAV (OROS and Audio) SDF, binary, ATFX (optional)&lt;br /&gt;
|-&lt;br /&gt;
!Data entry&lt;br /&gt;
|colspan=5|WAV, TXT, UFF and OR20 series AE2 &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6|Dimensions / weight &lt;br /&gt;
|-&lt;br /&gt;
!Dimensions (width x height x depth mm)&lt;br /&gt;
|35 x 110 x 185&lt;br /&gt;
|56 × 246 × 222&lt;br /&gt;
|102 x 260 x 311&lt;br /&gt;
|102 x 364 x 311&lt;br /&gt;
|-&lt;br /&gt;
!Weight&lt;br /&gt;
| 0.5kg&lt;br /&gt;
| 2.8kg&lt;br /&gt;
| 5.2 kg&lt;br /&gt;
| 8.2 kg&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6|Power supply&lt;br /&gt;
|-&lt;br /&gt;
!AC&lt;br /&gt;
|colspan=5|AC 100V-240V&lt;br /&gt;
|-&lt;br /&gt;
!DC &lt;br /&gt;
| USB 3.0 type C 5V&lt;br /&gt;
| 10V-28V, 20VA&lt;br /&gt;
| 10V-28V, 60VA&lt;br /&gt;
| 10V-28V, 100VA&lt;br /&gt;
|-&lt;br /&gt;
!DC battery internal operating time (built-in) &lt;br /&gt;
| NA : using PC battery&lt;br /&gt;
| 3h&lt;br /&gt;
| 2h&lt;br /&gt;
| 2h&lt;br /&gt;
|-&lt;br /&gt;
!Recommended operating temperature range&lt;br /&gt;
|colspan=1| 0 ℃ ～ 40 ℃&lt;br /&gt;
|colspan=3| 0 ℃ ～ 50 ℃&lt;br /&gt;
|-&lt;br /&gt;
!cooling fan&lt;br /&gt;
|colspan=1|Fan less&lt;br /&gt;
|colspan=3|Automatic control by built-in temperature sensor, forced stop possible (however, forced ON when the temperature rises above 50 ° C)&lt;br /&gt;
|}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PC requirement===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable style=&amp;quot;width:100%;&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Connections&lt;br /&gt;
|Type: '''Ethernet''', Connector: '''RJ45'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Operating systems&lt;br /&gt;
|Windows 7  / '''Windows 10''' / '''Windows 11''' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!Recommended&lt;br /&gt;
|'''CPU : Quad core processor''' (Desktop : Intel Core i3 or Ryzen 3, Laptop : Intel Core i5 or Ryzen 5)&amp;lt;br&amp;gt; &lt;br /&gt;
'''RAM : 6 GB'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Storage : SSD''', 1 GB free &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt; storage for signals&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-table;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]] [[NVGate_Overall_Acoustic_-_Sound_Level_meter|Sound Level Meter]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_13.png]] [[NVGate_Waterfall|Waterfall analysis (three-dimensional display)]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 10.png]] [[NVGate_Recorder|Signal record and post analysis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]] [[NVGate_FFT|Resonance frequency by impact hammer]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]]  [[ORBIGate|Vibration on rotordynamics (orbit,...)]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]]  [[Modal|Modal Analysis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]]  [[Sound_Power|Sound Power]]&lt;br /&gt;
|} &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li style=&amp;quot;display: inline-table;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]] [[NVGate_FFT|Frequency analysis, spectrum analysis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]] [[NVGate_Octave_Analyzer|Noise / acoustic analysis]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 10.png]] [[NVGate_D-Rec|Time series analysis (data logger)]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]] [[NVGate_Synchronous_Order_Analysis|Vibration  of rotating machines]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]] [[NVGate_Ribbons:_Automation|Customization (ex: automatic measurement)]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]]  [[Sound_Quality_Lite|Sound Quality]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:REF-MAN VOL1 Analyzer Settings Browser wiki partA 12.png]]  [[Monitoring_Solution|Monitoring]]&lt;br /&gt;
|} &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Catalog download===&lt;br /&gt;
[[File:download_brochure.jpg|left|250px|noise and vibration catalog download]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.oros.com/wp-content/uploads/2020/08/m002-103-10_oros_range_brochure.pdf Download]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Applications/ Case study===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Main application and commonly used functions:'''&lt;br /&gt;
&lt;br /&gt;
FFT analyzers are used in research and development, quality control, inspection, service departments, etc. &lt;br /&gt;
&lt;br /&gt;
'''Improvements in vehicle quietness, ride quality, comfort, maneuverability, etc.'''&lt;br /&gt;
&lt;br /&gt;
[[File:car_NVH.PNG|right|Automotive noise and vibration]]&lt;br /&gt;
&lt;br /&gt;
* [https://www.oros.com/solutions/data-acquisition-and-signal-processing/narrow-band-spectral-analysis/ Frequency analysis]&lt;br /&gt;
* [https://www.oros.com/solutions/acoustics/1-n-octave-analysis/ 1 / N octave analysis]&lt;br /&gt;
* [https://www.oros.com/solutions/structural-dynamics/frequency-response-function-frf-acquisitions/ Resonance frequency measurement by vibration]&lt;br /&gt;
* [https://www.oros.com/solutions/structural-dynamics/modal-analysis/ Experimental mode analysis]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Responding to quality problems caused by vibration and noise of vehicles and rotating equipment'''&lt;br /&gt;
&lt;br /&gt;
[[File:rotating.PNG|right|rotating machine vibration]]&lt;br /&gt;
&lt;br /&gt;
*[https://www.oros.com/solutions/acoustics/sound-level-meter/ Overall measurement]&lt;br /&gt;
*[https://www.oros.com/solutions/data-acquisition-and-signal-processing/narrow-band-spectral-analysis/ Frequency analysis]&lt;br /&gt;
*[https://www.oros.com/solutions/rotating-analysis/turbomachinery-vibration-and-rotordynamics/ Turbomachinery Analysis] &lt;br /&gt;
*[https://www.oros.com/solutions/rotating-analysis/order-tracking-analysis/ Rotation order ratio / RPM tracking analysis]&lt;br /&gt;
*[https://www.oros.com/solutions/rotating-analysis/torsion-twist/ Rotational torsional vibration analysis]&lt;br /&gt;
*[https://www.oros.com/solutions/structural-dynamics/frequency-response-function-frf-acquisitions/ Resonance frequency measurement by vibration]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Environmental problems caused by noise from construction machinery, office machines, home appliances, etc.'''&lt;br /&gt;
&lt;br /&gt;
[[File:machinery.PNG|right|Acoutsic and vibration application]]&lt;br /&gt;
*[https://www.oros.com/solutions/acoustics/sound-level-meter/ Overall measurement]&lt;br /&gt;
*[https://www.oros.com/solutions/data-acquisition-and-signal-processing/narrow-band-spectral-analysis/ Frequency analysis]&lt;br /&gt;
*[https://www.oros.com/solutions/acoustics/1-n-octave-analysis/ 1/N octave analysis]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Problems with processing accuracy due to minute vibrations in microscopes, machine tools, semiconductor manufacturing equipment, etc'''.&lt;br /&gt;
&lt;br /&gt;
[[File:accuracy.PNG|right| Accuracy measurement]]&lt;br /&gt;
*[https://www.oros.com/solutions/data-acquisition-and-signal-processing/narrow-band-spectral-analysis/ Frequency analysis]&lt;br /&gt;
*[https://www.oros.com/solutions/structural-dynamics/frequency-response-function-frf-acquisitions/ Resonance frequency measurement by vibration]&lt;br /&gt;
*[https://www.oros.com/solutions/structural-dynamics/modal-analysis/ Experimental modal analysis]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''A collection of application examples using the OROS FFT analyzer OROS series'''&lt;br /&gt;
&lt;br /&gt;
Introducing solution examples that can be provided by various functions unique to OROS FFT analyzers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Vibration measurement of cutting machine'''&lt;br /&gt;
&lt;br /&gt;
[[File:cutting tools machine.jpg|150px|left|Vibration measurement of cutting machine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Introducing what approach can be taken using the OROS FFT Analyzer to identify mechanical resonance problems due to changes in cutting conditions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://my.oros.com/categories/application-notes/ Download on my.oros.com (need register)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Monitoring of wind power generation equipment and abnormality diagnosis''' &lt;br /&gt;
&lt;br /&gt;
[[File:eolienne.PNG|left|Monitoring vibration]]&lt;br /&gt;
&lt;br /&gt;
Measuring vibration noise generated from rotating machines (gearboxes, generators, etc.) in wind power generation equipment is indispensable for equipment maintenance and longevity. In addition to the real-time analysis capability of rotating machinery, which is the strength of the OROS FFT analyzer, remote control / monitoring and stand-alone functions can be used to more efficiently diagnose equipment for wind power generation equipment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://my.oros.com/categories/application-notes/ Download on my.oros.com (need to register)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Diesel engine camshaft rotational twist measurement''' &lt;br /&gt;
[[File:danielson torsionnal.PNG|left|Diesel engine camshaft rotational twist]]&lt;br /&gt;
&lt;br /&gt;
In the prototype of a small diesel engine, there is a problem that the rotational torsional vibration of the timing belt and the camshaft resonates, causing a large vibration. By measuring rotational fluctuations and rotational twists with high accuracy using the six tachometer channels mounted on the OROS FFT analyzer, it is clarified which rotational order is dominant for vibration.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://my.oros.com/categories/application-notes/ Download on my.oros.com (need register)]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Much more Application note on [https://my.oros.com/ my.oros.com]'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery gallery=&amp;quot;&amp;quot; mode=&amp;quot;packed-hover&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;&lt;br /&gt;
File:End of line turbine test.jpg|alt=Gear box measurement with accelerometers|Allen Gears: gear box rotating vibration&lt;br /&gt;
File:In flisght helicopter vibration measurement.PNG|alt=motor vibration order extraction|Conrad: On helicopter vibration measurement&lt;br /&gt;
File:Mecalac sound power.jpg|alt=Octave and sound level meter with microphone|Mecalac: Sound power acoustic measurement&lt;br /&gt;
File:In-porsche.JPG|alt=Automotive octave waterfall analyzer with order extraction|Porsche: acoustic sound quality measurement&lt;br /&gt;
File:Sound power2.jpg|alt=Acoustic room with microphone |Bosch: Sound power acoustic measurement on anechoic chamber&lt;br /&gt;
File:Vibration on block press.jpg|alt=Shock test measurement|IFF Weimar: Vibration on block press&lt;br /&gt;
File:Blade vibration.jpg|alt=Spectrum analyzer on the field|Blade vibration&lt;br /&gt;
File:Elevator shaft vibration.jpg|alt=accelerometer and microphone analysis|Sicor: Elevator motor vibration&lt;br /&gt;
File:DBVib 01.JPG|alt=Orbit shaft center line and fluid film bearing vibration|dBVib: On site measurement on turbomachinery&lt;br /&gt;
File:Equilibrage 005.jpg|alt=Acceleromters on each side of the plan|BSCA: Vibration balancing test&lt;br /&gt;
File:Washingmachine.jpg|alt=Bump test geometry with modal software|Washing macine FRF resonnance frequnecy test&lt;br /&gt;
File:Master at work.jpg|alt=team watching overall value of accelerometer|Vibration measurement&lt;br /&gt;
File:Windturbine.jpg|alt=Motor of wind turbine analysis|GDF SUEZ: Windturbine monitoring measurement&lt;br /&gt;
File:3 OR38.JPG|alt=multichannel analyzer portable  |3 analyzers working together&lt;br /&gt;
File:Turbine.JPG|alt=hydro vibration measurement|Alstom: Measurement on turbine&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Some references:'''&lt;br /&gt;
&lt;br /&gt;
[[File:reference.PNG|800px|Analyzer reference|alt=airplane automotive energy measurement]]&lt;br /&gt;
&lt;br /&gt;
===Full technical support===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Hotline dedicated'''&lt;br /&gt;
&lt;br /&gt;
[[File:Custcare team2 web-1.jpg|right|150px|support FFT analyzer|alt=expert on noise and vibration]]&lt;br /&gt;
Responsiveness is the key to offer the best level of services. OROS relies on a powerful network of subsidiaries, offices, resellers, maintenance centers and qualified partners. They are the first steps of efficiency.&lt;br /&gt;
&lt;br /&gt;
Tel: +33.4.76.90.52.40&amp;lt;br&amp;gt;&lt;br /&gt;
Email: [http://customer.care@oros.com customer.care@oros.com]&lt;br /&gt;
&lt;br /&gt;
[https://www.oros.com/find-us/ Your local distributor]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* '''User training course''' &lt;br /&gt;
OROS proposes training specially dedicated to customers every year for free (depending on countries). This is an opportunity to take advantage of your analyzer system capabilities, to get premium information on OROS range evolution, to discuss with your peers, and for OROS, to listen to your product enhancement desires.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:user_day.jpg|Acoutsic and vibration training|alt=Korean vibration camp]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Worldwide presence and accredited maintenance center'''&lt;br /&gt;
&lt;br /&gt;
With a worldwide coverage of distributor network and maintenance center (China, Europe, India, Japan, Saudi Arabia, South Korea, USA), OROS is in close proximity to its customers, reducing maintenance downtime.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:map_world_distributor.JPG|Spectrum analyzer worldwild seller|alt=maintenance center]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.oros.com/find-us/ Find Your local distributor]&lt;br /&gt;
[[File:repair.jpg|200px|right|repair hardware analyzer|alt=calibration repair metrologic instrument]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Technicians are certiﬁed on a regular basis by OROS specialists, enabling them to repair, calibrate and upgrade all OROS systems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Premium contract'''&lt;br /&gt;
&lt;br /&gt;
1, 2 or 4 years renewable [https://www.oros.com/services/contracts/ contracts] to extend your warranty.&lt;br /&gt;
&lt;br /&gt;
* Access to the latest software version.&lt;br /&gt;
* Full coverage on your instrument (calibration and maintenance)&lt;br /&gt;
* Guaranteed turn around time (4 days) for hardware repairs and calibration&lt;br /&gt;
* Privileged access to extended services at a preferential rate: urgent loan within 1 day.&lt;br /&gt;
&lt;br /&gt;
===Video content ===&lt;br /&gt;
&lt;br /&gt;
We have released videos such as product introductions and demonstrations.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/user/OROSanalyzers/videos Click here for the youtube video content page]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;width:100%;&amp;quot; &lt;br /&gt;
|style=&amp;quot;background: #0000A0; text-align:center;&amp;quot;|&amp;lt;big&amp;gt;[https://www.oros.com/demo-request/ &amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;Schedule  a  demo]&amp;lt;/big&amp;gt;&lt;br /&gt;
|style=&amp;quot;background: red; text-align:center;&amp;quot;|&amp;lt;big&amp;gt;[https://www.oros.com/quote-request-form/ &amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt; Get a quotation]&amp;lt;/big&amp;gt;&lt;br /&gt;
|style=&amp;quot;background: green; text-align:center;&amp;quot;|&amp;lt;big&amp;gt;[[FFT_Spectrum_Analyzer_Multipurpose#Full_technical_support|&amp;lt;span style=&amp;quot;color:white;&amp;quot;&amp;gt;Contact support]]&amp;lt;/big&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=NVGate_V18:_Install_Process&amp;diff=12875</id>
		<title>NVGate V18: Install Process</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=NVGate_V18:_Install_Process&amp;diff=12875"/>
		<updated>2026-05-04T07:25:12Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:WikiOros]]&lt;br /&gt;
NVGate V18 is now available. &lt;br /&gt;
&lt;br /&gt;
[[File:splashscreen_V18.png|500px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==What's new ?==&lt;br /&gt;
Read the [[NVGate_V18:_Release_note|release note NVGate V18]].&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
&lt;br /&gt;
NVGate V18 is compatible with the following OROS instruments: O4 - OR35TW - OR36 TW - OR38 TW. &lt;br /&gt;
&lt;br /&gt;
If you're using an older system like the OR34, OR35 V1, OR36 V1/V2, or OR38 V1/V2, please reach out to your [https://www.oros.com/find-us/ local OROS distributor] or contact us directly at customer.care@oros.com to learn more about our Trade-in offers. Upgrade now to unlock the full potential of our latest systems!&lt;br /&gt;
&lt;br /&gt;
If you're using an OR35TW, please review the [[NVGate_V17:_Install_Process#Notice_for_OR35TW_Users|notice]] for important information.&lt;br /&gt;
&lt;br /&gt;
==What do you need ?==&lt;br /&gt;
====Keys====&lt;br /&gt;
A reader mode is available without license.&lt;br /&gt;
&lt;br /&gt;
The normal version is available for OROS customers under warranty or maintenance contract.&amp;lt;br&amp;gt;&lt;br /&gt;
You need to ask [https://www.oros.com/find-us/ your local OROS distributor] or customer.care@oros.com for the .zip keys.&lt;br /&gt;
&lt;br /&gt;
====Download NVGate version====&lt;br /&gt;
Download [https://my.oros.com/app/uploads/2026/04/nvgatev18-00-001-pk1.zip NVGate V18] (You need to log in into [http://www.myoros.com www.myoros.com] first)&lt;br /&gt;
&lt;br /&gt;
==Install Process==&lt;br /&gt;
*Extract NVGate version&lt;br /&gt;
*Launch the setup.exe and follow the instructions.(No need to input the key during the install)&lt;br /&gt;
*When the window &amp;quot;NVGate environment&amp;quot; appears, press ok.&lt;br /&gt;
*Start NVGate, the window below is displayed. &lt;br /&gt;
===update the keys=== &lt;br /&gt;
&lt;br /&gt;
*1) Select the item (analyzer or dongle) for which you want to update the license keys.&lt;br /&gt;
*2) Select the '''.ZIP''' archive containing your new license key files. &lt;br /&gt;
*3) The license key files will be automatically copied in the NVGate installation folder and the keys of your analyzer and USB dongle will be encrypted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:update_process.png|900px]]&lt;br /&gt;
&lt;br /&gt;
*'''update firmware'''&lt;br /&gt;
[[File:update_process_ firmware.png|framed|none]]&lt;br /&gt;
Firmware: click on update firmware, it will automatically update the firmware.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''That's all. NVGate is updated.'''&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
Read [[NVGate_Licence_Keys_Troubleshooting|this page for any troubleshooting]] when you encrypt the keys&lt;br /&gt;
&lt;br /&gt;
== FREE OROS Framework ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The OROS Framework, including the powerful '''NVDrive''' and '''Toolkit''', enables extensive customization for real-time control and post-processing in noise and vibration analysis.&lt;br /&gt;
&lt;br /&gt;
The Framework package is located in the 'Framework' folder within the NVGate V18 installer, available for download [https://my.oros.com/app/uploads/2026/04/framework-v18.zip here]&lt;br /&gt;
&lt;br /&gt;
[[File:framework.png|250px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The OROS Framework is provided at no cost, offering powerful customization tools for your needs. While technical support and bug fixes are not included, you can purchase dedicated support and coaching services for expert guidance and tailored assistance, ensuring you get the most out of its full potential.&lt;br /&gt;
&lt;br /&gt;
== Notice for OR35TW Users ==&lt;br /&gt;
&lt;br /&gt;
At OROS, we are dedicated to continuously improving signal recording performance. With the advancements in technology, starting from NVGate 2023, signals are now recorded directly to the PC by default to ensure optimal performance. If you're using this default setting, you're all set!&lt;br /&gt;
&lt;br /&gt;
However, if you own an OR35TW system delivered before June 2024 (serial numbers between 902854 and 904639) and rely on features such as D-rec mode, cascade (multi-analyzer) mode, or recording signals directly in the analyzer, an internal hard drive upgrade to a higher-performing version will be necessary to maintain full functionality.&lt;br /&gt;
&lt;br /&gt;
The great news is, if your system is under warranty, covered by a service contract, or you’re upgrading to NVGate V18, the hard drive replacement will be performed free of charge when your system is sent to an OROS maintenance center. Additionally, if you're calibrating your system, the hard drive will be upgraded at no extra cost!&lt;br /&gt;
&lt;br /&gt;
== Old versions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===NVGate2022 V17===&lt;br /&gt;
https://wiki.oros.com/index.php?title=NVGate_V17:_Install_Process&lt;br /&gt;
&lt;br /&gt;
===NVGate2022 V16===&lt;br /&gt;
https://wiki.oros.com/index.php?title=NVGate_V16:_Install_Process&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=NVGate&amp;diff=12870</id>
		<title>NVGate</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=NVGate&amp;diff=12870"/>
		<updated>2026-04-21T15:30:00Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* NVGate Add on */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|title=NVGate – Noise &amp;amp; Vibration Analysis Software | Official Documentation&lt;br /&gt;
|keywords=NVGate, NVGate V17, noise and vibration software, FFT analyzer software, vibration analysis, acoustic analysis, signal processing software, order analysis, octave analyzer, sound level meter, data acquisition software, OROS software, NVGate manual, NVGate documentation, NVGate tutorial&lt;br /&gt;
|description=Official NVGate documentation: FFT analysis, order analysis, octave, acoustic measurement and more. Complete user guide for NVGate V17 – the professional noise and vibration software by OROS.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; clear:right; margin:0 0 20px 28px; width:280px; border-radius:12px; overflow:hidden; background:#fff; box-shadow:0 4px 18px rgba(0,0,0,0.13); font-size:0.95em; line-height:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- ── Header ── --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:linear-gradient(160deg,#1e3a5f,#2a5f8f); padding:22px 16px; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:general-B-256.png|60px]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:#fff; font-size:1.18em; font-weight:bold; margin-top:10px; letter-spacing:.02em;&amp;quot;&amp;gt;NVGate&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:rgba(255,255,255,0.65); font-size:0.82em; margin-top:3px;&amp;quot;&amp;gt;Noise &amp;amp;amp; Vibration Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:12px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background:#f0a500; color:#fff; font-size:0.75em; font-weight:bold; padding:3px 14px; border-radius:20px; letter-spacing:.05em;&amp;quot;&amp;gt;V17 — Latest release&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Screenshot ── --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2f7; text-align:center; padding:14px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:nvGate 7 550pxls.jpg|250px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Info rows ── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; width:42%; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Developer&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | [http://www.OROS.com Oros Digital]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Type&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | [https://en.wikipedia.org/wiki/Data_acquisition DAQ], [https://en.wikipedia.org/wiki/Signal_processing Signal processing], [https://en.wikipedia.org/wiki/Noise Noise] &amp;amp;amp; [https://en.wikipedia.org/wiki/Vibration Vibration], [https://en.wikipedia.org/wiki/Spectrum_analyzer Spectrum analyser]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8;&amp;quot; | First release&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8;&amp;quot; | 2001&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | OS&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Windows 11 / 10 &amp;amp;nbsp;([[PC_Requirements|requirements]])&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Language&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8;&amp;quot; | English &amp;amp;middot; [https://www.toyo.co.jp/mecha/products/detail/oros-fft.html Japanese] &amp;amp;middot; Russian&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8;&amp;quot; | Licence&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8;&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6;&amp;quot; | Website&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px;&amp;quot; | [http://www.oros.com oros.com]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Footer / CTA ── --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f4f7fb; border-top:1px solid #e4eaf2; padding:14px 16px; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_V17:_Install_Process|&amp;lt;span style=&amp;quot;display:inline-block; background:#f0a500; color:#fff; font-weight:bold; padding:8px 22px; border-radius:6px; font-size:0.92em;&amp;quot;&amp;gt;&amp;amp;#x2B07; Download V17&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:8px; font-size:0.83em;&amp;quot;&amp;gt;[[FFT_Spectrum_Analyzer_Multipurpose#Full_technical_support|Contact support]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════&lt;br /&gt;
     BANNIÈRE V17&lt;br /&gt;
════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:linear-gradient(135deg, #1e3a5f 0%, #2a6099 100%); border-radius:10px; padding:22px 28px; margin:20px 0; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:inline-block; background:#f0a500; color:#fff; font-size:0.72em; font-weight:bold; letter-spacing:.1em; padding:3px 10px; border-radius:20px; margin-bottom:8px;&amp;quot;&amp;gt;NOW&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:#fff; font-size:1.45em; font-weight:bold; line-height:1.2em;&amp;quot;&amp;gt;NVGate V17 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;color:rgba(255,255,255,0.75); font-size:0.9em; margin-top:5px;&amp;quot;&amp;gt;Enhanced analysis capabilities &amp;amp;amp; new features&amp;lt;/div&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:flex; flex-direction:column; gap:8px; align-items:flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f0a500; border-radius:6px; padding:9px 18px; font-weight:bold; font-size:0.9em;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;[[NVGate_V17:_Install_Process|&amp;amp;#x2B07; Update to V17]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.88em;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:rgba(255,255,255,0.9);&amp;quot;&amp;gt;&amp;amp;#x25B8; [[NVGate_V17:_Release_note|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;Release Notes&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.88em;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:rgba(255,255,255,0.9);&amp;quot;&amp;gt;&amp;amp;#x25B8; [[NVGate_Installation_and_Connection|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;First Installation&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════&lt;br /&gt;
     GETTING STARTED&lt;br /&gt;
════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#fff; border:1px solid #d0dae6; border-top:4px solid #1e3a5f; border-radius:0 0 8px 8px; padding:18px 24px; margin:4px 0 24px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:1.05em; color:#1e3a5f; margin-bottom:14px;&amp;quot;&amp;gt;&amp;amp;#x1F3C1;&amp;amp;nbsp; Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.3em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;#x25B8;&amp;amp;nbsp; [[FFT_Spectrum_Analyzer_Multipurpose|OROS analyzer overview]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;#x25B8;&amp;amp;nbsp; [[NVGate_Software_overview|First Start With NVGate]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;#x25B8;&amp;amp;nbsp; [https://youtube.com/playlist?list=PLwB9Ae8PGEbP-aPxWtOo1m59tingiiBIq&amp;amp;si=aLkUQ4Sz8vvnqo1g NVGate Video Tutorials]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Complete documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #bbc8d4; border-radius:8px; overflow:hidden; margin:18px 0; box-shadow:0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border-collapse:collapse; width:100%; table-layout:fixed;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; style=&amp;quot;background:#1e3a5f; color:#fff; padding:6px 14px; font-size:0.85em; font-weight:bold; letter-spacing:.1em;&amp;quot; |&lt;br /&gt;
&amp;amp;#9658;&amp;amp;nbsp; DOCUMENTATION&lt;br /&gt;
|- style=&amp;quot;background:#eef2fb; text-align:center; font-size:0.92em;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; width:12.5%; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Home_Tab|Home]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Acquisition_Tab|Acquisition]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Analysis_Tab|Analysis]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Data|Data]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Display|Display]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Report|Report]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Automation|Automation]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Preferences|Preferences]]&lt;br /&gt;
|- style=&amp;quot;background:#fff; vertical-align:top; font-size:0.92em;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:GoToR.png|x32px|link=NVGate_GoToResult]]&amp;amp;nbsp;[[NVGate_GoToResult|GoToResult]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid #eee; margin-top:4px; padding-top:4px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:PA_icone.png|x22px|link=NVGate_Post_Analysis]] [[NVGate_Post_Analysis|Post Analyze]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Save_i.png|x22px|link=NVGate_Ribbons:_Home_Tab#Save_group]] [[NVGate_Ribbons:_Home_Tab#Save_group|Save setup]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:connect_wiz.png|x22px|link=NVGate_Connection_Wizard]] [[NVGate_Connection_Wizard|Connect Inputs]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Player]] [[NVGate_Player|Player]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_255.png|x22px|link=NVGate_Transducer_and_Calibration]] [[NVGate_Transducer_and_Calibration|Transducer &amp;amp; Cal.]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Virtual_Input]] [[NVGate_Virtual_Input|Virtual Input]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Output_Signals]] [[NVGate_Output_Signals|Output Signals]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Event_definition]] [[NVGate_Event_definition|Event definition]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Filter_Builder]] [[NVGate_Filter_Builder|Filter]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Tachometer]] [[NVGate_Tachometer|Tachometer]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Front_End]] [[NVGate_Front_End|Front End]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Recorder]] [[NVGate_Recorder|Recorder]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_FFT]] [[NVGate_FFT|FFT]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Synchronous_Order_Analysis]] [[NVGate_Synchronous_Order_Analysis|SOA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Time_Domain_Analysis]] [[NVGate_Time_Domain_Analysis|TDA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Octave_Analyzer]] [[NVGate_Octave_Analyzer|1/n Octave]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Overall_Acoustic_-_Sound_Level_meter]] [[NVGate_Overall_Acoustic_-_Sound_Level_meter|OVA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Monitor_Plug_In]] [[NVGate_Monitor_Plug_In|Monitor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_13.png|x22px|link=NVGate_Waterfall]] [[NVGate_Waterfall|Waterfall]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Time_windows|Force / response windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Torsional|Torsional Analysis]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:dataset_i.png|x22px|link=NVGate_dataset_management]] [[NVGate_dataset_management|Dataset management]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:edit_icone.png|x22px|link=NVGate_Edit_Measurement]] [[NVGate_Edit_Measurement|Edit Measurement]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Data_download_2022.PNG|x22px|link=Disk(Hard-drive)_management]] [[Disk(Hard-drive)_management|Disk management]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_503.jpg|x22px|link=NVGate_Export/import]] [[NVGate_Export/import|Export / Import]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:OR10_stand_alone.png|x22px|link=NVGate_OR10_Stand_alone]] [[NVGate_OR10_Stand_alone|OR10 Stand Alone]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_D-Rec|D-Rec : record without PC]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:ADD_re.png|x22px|link=NVGate_Ribbons:_Display]] [[NVGate_Ribbons:_Display|Add / Remove windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_467.png|x22px|link=NVGate_Marker]] [[NVGate_Marker|Marker]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_13.png|x22px|link=NVGate_Waterfall#Waterfall_Display]] [[NVGate_Waterfall#Waterfall_Display|Waterfall Display]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[NVGate_Report|Report]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:Reports_Tools_Ribbons_71.jpg|x22px|link=NVGate_Macro]] [[NVGate_Macro|Macro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_134.png|x22px|link=NVGate_Sequence]] [[NVGate_Sequence|Sequencer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CP.png|x22px|link=NVGate_Control_Panel]] [[NVGate_Control_Panel|Control Panel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_162.png|x22px|link=NVGate_Mask_And_Alarm]] [[NVGate_Mask_And_Alarm|Mask And Alarm]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:preference.png|x22px|link=NVGate_User_Preferences]] [[NVGate_User_Preferences|User Preferences]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:properties.png|x22px|link=NVGate:_Properties]] [[NVGate:_Properties|Properties]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- ═══ ADDITIONAL RESOURCES ═══ --&amp;gt;&lt;br /&gt;
==Additional ressources==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex; gap:12px; margin:0 0 20px; flex-wrap:wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:155px; border:1px solid #c8ccd1; border-left:4px solid #1e3a5f; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#1e3a5f; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Workspace View&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:1.8em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_Architecture|Architecture]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ASB_.png|200px|link=NVGate_Analyzer_Setting_Browser_(ASB)]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Analyzer_Setting_Browser_(ASB)|Analyzer Setting Browser]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Control_pannel.png|200px|link=NVGate_Control_Panel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Control_Panel|Control Panel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Project_manager.png|200px|link=NVGate_Project_manager]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Project_manager|Project Manager]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Status_bar|Status bar]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:190px; border:1px solid #c8ccd1; border-left:4px solid #4a6fa5; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#4a6fa5; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Display - Windows - Trace&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.2em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_Display|Display Overview]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Integrate_-_Differentiate_-_Unit|Integrate / Differentiate - Unit (RMS, pk, PSD...)]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Operator|Graphical Operator]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Zoomed_signal]] [[NVGate_Zoomed_signal|Player Zoomed signal]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:190px; border:1px solid #c8ccd1; border-left:4px solid #4a6fa5; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#4a6fa5; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Signal Processing Notes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.2em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_CBT_principle_and_settings|CBT principle and settings]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_SOA_and_CBT_techniques|SOA vs CBT]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Envelope_analysis|Envelope Analysis]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_time_shift_resampling|Ext synch: time shift resampling]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[User_note:_FFT_averaging|FFT Averaging]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate:_How_do_I|NVGate: How do I?]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:165px; border:1px solid #c8ccd1; border-left:4px solid #4a6fa5; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#4a6fa5; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Appendix&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.2em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_Formula_Computation|NVGate FFT Computation]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_filter_formula_appendix|Filter: curve and formula]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Weighting_Windows_appendix|Weighting Windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_time_shift_resampling|Ext synch: time shift resampling]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Specification|Specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Shortcuts|Shortcuts]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Glossary|Glossary]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==NVGate Add on==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A DLL is needed for NVDrive. It is downloadable in the Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package [https://www.microsoft.com/en-us/download/details.aspx?id=26999 here].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex; flex-wrap:wrap; gap:16px; margin:22px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:modbus-drawing.png|140px|link=Modbus_TCP/IP_to_NVGate|Modbus TCP/IP]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Modbus_TCP/IP_to_NVGate|Modbus TCP/IP]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Inject Modbus registers as DC simulated channels&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Manual_-_Tach_Extract_08.gif|140px|link=External_Tools:_TachTool|TachTool]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[External_Tools:_TachTool|TachTool]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Extract tachometer reference from a recorded signal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Batch post process.png|140px|link=NVGate_BatchPostProcess_tool|BatchPostProcess]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_BatchPostProcess_tool|BatchPostProcess]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Automate post-processing on multiple files&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Manual_-_Rosette_04.gif|140px|link=External_tools:_Rosette_computation|Rosette computation]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[External_tools:_Rosette_computation|Rosette computation]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Compute principal stresses from strain gauge rosettes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:RT60_05.png|140px|link=RT60_Calculator|RT60 Calculator]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[RT60_Calculator|RT60 Calculator]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Measure acoustic reverberation time&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Auto_rep.png|140px|link=NVGate_Tools:_AutoReport|AutoReport]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Tools:_AutoReport|AutoReport]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Generate automated production test reports&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:EditSignal_05.png|140px|link=NVGate_Tools:_EditSignal|EditSignal]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Tools:_EditSignal|EditSignal]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Edit and synthesize recorded time signals&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:candbc.png|140px|link=NVGate_Tools:_CanBus_Import_.dbc|CanBus Import]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Tools:_CanBus_Import_.dbc|CanBus Import]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Import CAN bus variables from .dbc files&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:IRIG.png|140px|link=NVGate_IRIG_Marker|IRIG Marker]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_IRIG_Marker|IRIG Marker]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Synchronize measurements with IRIG-B time code&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:HP_analyzer.png|140px|link=NVGate_HP_Spectrum_Analyzer|HP Spectrum Analyzer]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_HP_Spectrum_Analyzer|HP Spectrum Analyzer]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Emulate HP/Agilent spectrum analyzer display modes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:gps_navilock.jpg|140px|link=NVGate_DC_Simulated_Manager#GPS|GPS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_DC_Simulated_Manager#GPS|GPS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Log GPS position as DC simulated channels&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:display_torsion.PNG|140px|link=Display_Torsion_ODS|Display Torsion ODS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Display_Torsion_ODS|Display Torsion ODS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Visualize torsional operational deflection shapes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:weather.png|140px|link=NVGate_DC_Simulated_Manager#Weather_station|Weather station]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_DC_Simulated_Manager#Weather_station|Weather station]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Integrate Davis weather station data as DC channels&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Axis_WholeBody.png|140px|link=Human_Vibration|Human Vibration]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Human_Vibration|Human Vibration]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Whole-body &amp;amp; hand-arm vibration analysis (ISO 2631)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Indicator_diagram_steam_admission.png|140px|link=Addons:PV_Diagram|PV Diagram]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Addons:PV_Diagram|PV Diagram]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Pressure-Volume indicator diagram for engine analysis&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:EVHV_01.gif|140px|link=NVGate_EVHV|EVHV]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_EVHV|EVHV]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Electrical motor &amp;amp; inverter diagnostic solution&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Engine_diag3.png|140px|link=NVGate_Diesel_Engine_Vibration_Solution:_EngineDiag|EngineDiag]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Diesel_Engine_Vibration_Solution:_EngineDiag|EngineDiag]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Diesel engine vibration diagnostic solution&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Sweep.png|140px|link=THD_Sweep_Measurement|THD]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[THD_Sweep_Measurement|THD sweep measurement ]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Total harmonic distortion with a sweep sine measurement&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:11_main_full.png|140px|link=SRS_Tool_—_Shock_Response_Spectrum_Analyser|SRS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[SRS_Tool_—_Shock_Response_Spectrum_Analyser|SRS Tool]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Shock Response Spectrum measurement&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=NVGate&amp;diff=12869</id>
		<title>NVGate</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=NVGate&amp;diff=12869"/>
		<updated>2026-04-21T15:19:34Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* NVGate Add on */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|title=NVGate – Noise &amp;amp; Vibration Analysis Software | Official Documentation&lt;br /&gt;
|keywords=NVGate, NVGate V17, noise and vibration software, FFT analyzer software, vibration analysis, acoustic analysis, signal processing software, order analysis, octave analyzer, sound level meter, data acquisition software, OROS software, NVGate manual, NVGate documentation, NVGate tutorial&lt;br /&gt;
|description=Official NVGate documentation: FFT analysis, order analysis, octave, acoustic measurement and more. Complete user guide for NVGate V17 – the professional noise and vibration software by OROS.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; clear:right; margin:0 0 20px 28px; width:280px; border-radius:12px; overflow:hidden; background:#fff; box-shadow:0 4px 18px rgba(0,0,0,0.13); font-size:0.95em; line-height:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- ── Header ── --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:linear-gradient(160deg,#1e3a5f,#2a5f8f); padding:22px 16px; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:general-B-256.png|60px]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:#fff; font-size:1.18em; font-weight:bold; margin-top:10px; letter-spacing:.02em;&amp;quot;&amp;gt;NVGate&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:rgba(255,255,255,0.65); font-size:0.82em; margin-top:3px;&amp;quot;&amp;gt;Noise &amp;amp;amp; Vibration Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:12px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background:#f0a500; color:#fff; font-size:0.75em; font-weight:bold; padding:3px 14px; border-radius:20px; letter-spacing:.05em;&amp;quot;&amp;gt;V17 — Latest release&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Screenshot ── --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2f7; text-align:center; padding:14px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:nvGate 7 550pxls.jpg|250px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Info rows ── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; width:42%; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Developer&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | [http://www.OROS.com Oros Digital]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Type&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | [https://en.wikipedia.org/wiki/Data_acquisition DAQ], [https://en.wikipedia.org/wiki/Signal_processing Signal processing], [https://en.wikipedia.org/wiki/Noise Noise] &amp;amp;amp; [https://en.wikipedia.org/wiki/Vibration Vibration], [https://en.wikipedia.org/wiki/Spectrum_analyzer Spectrum analyser]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8;&amp;quot; | First release&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8;&amp;quot; | 2001&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | OS&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Windows 11 / 10 &amp;amp;nbsp;([[PC_Requirements|requirements]])&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8; vertical-align:top;&amp;quot; | Language&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8;&amp;quot; | English &amp;amp;middot; [https://www.toyo.co.jp/mecha/products/detail/oros-fft.html Japanese] &amp;amp;middot; Russian&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6; border-bottom:1px solid #f0f4f8;&amp;quot; | Licence&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px; border-bottom:1px solid #f0f4f8;&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:8px 12px 8px 16px; color:#7a8fa6;&amp;quot; | Website&lt;br /&gt;
| style=&amp;quot;padding:8px 14px 8px 8px;&amp;quot; | [http://www.oros.com oros.com]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Footer / CTA ── --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f4f7fb; border-top:1px solid #e4eaf2; padding:14px 16px; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_V17:_Install_Process|&amp;lt;span style=&amp;quot;display:inline-block; background:#f0a500; color:#fff; font-weight:bold; padding:8px 22px; border-radius:6px; font-size:0.92em;&amp;quot;&amp;gt;&amp;amp;#x2B07; Download V17&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:8px; font-size:0.83em;&amp;quot;&amp;gt;[[FFT_Spectrum_Analyzer_Multipurpose#Full_technical_support|Contact support]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════&lt;br /&gt;
     BANNIÈRE V17&lt;br /&gt;
════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:linear-gradient(135deg, #1e3a5f 0%, #2a6099 100%); border-radius:10px; padding:22px 28px; margin:20px 0; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:inline-block; background:#f0a500; color:#fff; font-size:0.72em; font-weight:bold; letter-spacing:.1em; padding:3px 10px; border-radius:20px; margin-bottom:8px;&amp;quot;&amp;gt;NOW&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;color:#fff; font-size:1.45em; font-weight:bold; line-height:1.2em;&amp;quot;&amp;gt;NVGate V17 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;color:rgba(255,255,255,0.75); font-size:0.9em; margin-top:5px;&amp;quot;&amp;gt;Enhanced analysis capabilities &amp;amp;amp; new features&amp;lt;/div&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:flex; flex-direction:column; gap:8px; align-items:flex-start;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f0a500; border-radius:6px; padding:9px 18px; font-weight:bold; font-size:0.9em;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;[[NVGate_V17:_Install_Process|&amp;amp;#x2B07; Update to V17]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.88em;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:rgba(255,255,255,0.9);&amp;quot;&amp;gt;&amp;amp;#x25B8; [[NVGate_V17:_Release_note|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;Release Notes&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.88em;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:rgba(255,255,255,0.9);&amp;quot;&amp;gt;&amp;amp;#x25B8; [[NVGate_Installation_and_Connection|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;First Installation&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ═══════════════════════════════════════&lt;br /&gt;
     GETTING STARTED&lt;br /&gt;
════════════════════════════════════════ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#fff; border:1px solid #d0dae6; border-top:4px solid #1e3a5f; border-radius:0 0 8px 8px; padding:18px 24px; margin:4px 0 24px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:1.05em; color:#1e3a5f; margin-bottom:14px;&amp;quot;&amp;gt;&amp;amp;#x1F3C1;&amp;amp;nbsp; Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.3em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;#x25B8;&amp;amp;nbsp; [[FFT_Spectrum_Analyzer_Multipurpose|OROS analyzer overview]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;#x25B8;&amp;amp;nbsp; [[NVGate_Software_overview|First Start With NVGate]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;#x25B8;&amp;amp;nbsp; [https://youtube.com/playlist?list=PLwB9Ae8PGEbP-aPxWtOo1m59tingiiBIq&amp;amp;si=aLkUQ4Sz8vvnqo1g NVGate Video Tutorials]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Complete documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #bbc8d4; border-radius:8px; overflow:hidden; margin:18px 0; box-shadow:0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&lt;br /&gt;
{| style=&amp;quot;border-collapse:collapse; width:100%; table-layout:fixed;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; style=&amp;quot;background:#1e3a5f; color:#fff; padding:6px 14px; font-size:0.85em; font-weight:bold; letter-spacing:.1em;&amp;quot; |&lt;br /&gt;
&amp;amp;#9658;&amp;amp;nbsp; DOCUMENTATION&lt;br /&gt;
|- style=&amp;quot;background:#eef2fb; text-align:center; font-size:0.92em;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; width:12.5%; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Home_Tab|Home]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Acquisition_Tab|Acquisition]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Analysis_Tab|Analysis]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Data|Data]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Display|Display]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Report|Report]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; border-right:1px solid #ccd6eb; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Automation|Automation]]&lt;br /&gt;
| style=&amp;quot;padding:10px 4px; font-weight:bold;&amp;quot; |&lt;br /&gt;
[[NVGate_Ribbons:_Preferences|Preferences]]&lt;br /&gt;
|- style=&amp;quot;background:#fff; vertical-align:top; font-size:0.92em;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:GoToR.png|x32px|link=NVGate_GoToResult]]&amp;amp;nbsp;[[NVGate_GoToResult|GoToResult]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-top:1px solid #eee; margin-top:4px; padding-top:4px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:PA_icone.png|x22px|link=NVGate_Post_Analysis]] [[NVGate_Post_Analysis|Post Analyze]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Save_i.png|x22px|link=NVGate_Ribbons:_Home_Tab#Save_group]] [[NVGate_Ribbons:_Home_Tab#Save_group|Save setup]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:connect_wiz.png|x22px|link=NVGate_Connection_Wizard]] [[NVGate_Connection_Wizard|Connect Inputs]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Player]] [[NVGate_Player|Player]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_255.png|x22px|link=NVGate_Transducer_and_Calibration]] [[NVGate_Transducer_and_Calibration|Transducer &amp;amp; Cal.]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Virtual_Input]] [[NVGate_Virtual_Input|Virtual Input]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Output_Signals]] [[NVGate_Output_Signals|Output Signals]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Event_definition]] [[NVGate_Event_definition|Event definition]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Filter_Builder]] [[NVGate_Filter_Builder|Filter]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_11.png|x22px|link=NVGate_Tachometer]] [[NVGate_Tachometer|Tachometer]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Front_End]] [[NVGate_Front_End|Front End]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Recorder]] [[NVGate_Recorder|Recorder]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_FFT]] [[NVGate_FFT|FFT]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Synchronous_Order_Analysis]] [[NVGate_Synchronous_Order_Analysis|SOA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Time_Domain_Analysis]] [[NVGate_Time_Domain_Analysis|TDA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Octave_Analyzer]] [[NVGate_Octave_Analyzer|1/n Octave]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Overall_Acoustic_-_Sound_Level_meter]] [[NVGate_Overall_Acoustic_-_Sound_Level_meter|OVA]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_12.png|x22px|link=NVGate_Monitor_Plug_In]] [[NVGate_Monitor_Plug_In|Monitor]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_13.png|x22px|link=NVGate_Waterfall]] [[NVGate_Waterfall|Waterfall]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Time_windows|Force / response windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Torsional|Torsional Analysis]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:dataset_i.png|x22px|link=NVGate_dataset_management]] [[NVGate_dataset_management|Dataset management]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:edit_icone.png|x22px|link=NVGate_Edit_Measurement]] [[NVGate_Edit_Measurement|Edit Measurement]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Data_download_2022.PNG|x22px|link=Disk(Hard-drive)_management]] [[Disk(Hard-drive)_management|Disk management]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_503.jpg|x22px|link=NVGate_Export/import]] [[NVGate_Export/import|Export / Import]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:OR10_stand_alone.png|x22px|link=NVGate_OR10_Stand_alone]] [[NVGate_OR10_Stand_alone|OR10 Stand Alone]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_D-Rec|D-Rec : record without PC]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:ADD_re.png|x22px|link=NVGate_Ribbons:_Display]] [[NVGate_Ribbons:_Display|Add / Remove windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_467.png|x22px|link=NVGate_Marker]] [[NVGate_Marker|Marker]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_13.png|x22px|link=NVGate_Waterfall#Waterfall_Display]] [[NVGate_Waterfall#Waterfall_Display|Waterfall Display]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[NVGate_Report|Report]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; border-right:1px solid #eaeff7; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:Reports_Tools_Ribbons_71.jpg|x22px|link=NVGate_Macro]] [[NVGate_Macro|Macro]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_134.png|x22px|link=NVGate_Sequence]] [[NVGate_Sequence|Sequencer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:CP.png|x22px|link=NVGate_Control_Panel]] [[NVGate_Control_Panel|Control Panel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Reports_Tools_Ribbons_162.png|x22px|link=NVGate_Mask_And_Alarm]] [[NVGate_Mask_And_Alarm|Mask And Alarm]]&lt;br /&gt;
| style=&amp;quot;padding:10px 8px; border-top:1px solid #dde6f0; line-height:2.2em;&amp;quot; |&lt;br /&gt;
[[File:preference.png|x22px|link=NVGate_User_Preferences]] [[NVGate_User_Preferences|User Preferences]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:properties.png|x22px|link=NVGate:_Properties]] [[NVGate:_Properties|Properties]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- ═══ ADDITIONAL RESOURCES ═══ --&amp;gt;&lt;br /&gt;
==Additional ressources==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex; gap:12px; margin:0 0 20px; flex-wrap:wrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:155px; border:1px solid #c8ccd1; border-left:4px solid #1e3a5f; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#1e3a5f; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Workspace View&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:1.8em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_Architecture|Architecture]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ASB_.png|200px|link=NVGate_Analyzer_Setting_Browser_(ASB)]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Analyzer_Setting_Browser_(ASB)|Analyzer Setting Browser]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Control_pannel.png|200px|link=NVGate_Control_Panel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Control_Panel|Control Panel]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Project_manager.png|200px|link=NVGate_Project_manager]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Project_manager|Project Manager]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Status_bar|Status bar]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:190px; border:1px solid #c8ccd1; border-left:4px solid #4a6fa5; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#4a6fa5; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Display - Windows - Trace&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.2em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_Display|Display Overview]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Integrate_-_Differentiate_-_Unit|Integrate / Differentiate - Unit (RMS, pk, PSD...)]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Operator|Graphical Operator]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:REF-MAN_VOL1_Analyzer_Settings_Browser_wiki_partA_10.png|x22px|link=NVGate_Zoomed_signal]] [[NVGate_Zoomed_signal|Player Zoomed signal]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:190px; border:1px solid #c8ccd1; border-left:4px solid #4a6fa5; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#4a6fa5; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Signal Processing Notes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.2em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_CBT_principle_and_settings|CBT principle and settings]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_SOA_and_CBT_techniques|SOA vs CBT]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Envelope_analysis|Envelope Analysis]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_time_shift_resampling|Ext synch: time shift resampling]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[User_note:_FFT_averaging|FFT Averaging]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate:_How_do_I|NVGate: How do I?]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; min-width:165px; border:1px solid #c8ccd1; border-left:4px solid #4a6fa5; padding:12px 14px; background:#fff;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; color:#4a6fa5; margin-bottom:10px;&amp;quot;&amp;gt;&amp;amp;#9632; Appendix&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;line-height:2.2em;&amp;quot;&amp;gt;&lt;br /&gt;
[[NVGate_Formula_Computation|NVGate FFT Computation]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_filter_formula_appendix|Filter: curve and formula]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Weighting_Windows_appendix|Weighting Windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_time_shift_resampling|Ext synch: time shift resampling]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Specification|Specification]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Shortcuts|Shortcuts]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[NVGate_Glossary|Glossary]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==NVGate Add on==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A DLL is needed for NVDrive. It is downloadable in the Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package [https://www.microsoft.com/en-us/download/details.aspx?id=26999 here].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex; flex-wrap:wrap; gap:16px; margin:22px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:modbus-drawing.png|140px|link=Modbus_TCP/IP_to_NVGate|Modbus TCP/IP]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Modbus_TCP/IP_to_NVGate|Modbus TCP/IP]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Inject Modbus registers as DC simulated channels&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Manual_-_Tach_Extract_04.png|140px|link=External_Tools:_TachTool|TachTool]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[External_Tools:_TachTool|TachTool]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Extract tachometer reference from a recorded signal&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Batch post process.png|140px|link=NVGate_BatchPostProcess_tool|BatchPostProcess]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_BatchPostProcess_tool|BatchPostProcess]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Automate post-processing on multiple files&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Manual_-_Rosette_04.gif|140px|link=External_tools:_Rosette_computation|Rosette computation]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[External_tools:_Rosette_computation|Rosette computation]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Compute principal stresses from strain gauge rosettes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:RT60_05.png|140px|link=RT60_Calculator|RT60 Calculator]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[RT60_Calculator|RT60 Calculator]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Measure acoustic reverberation time&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Auto_rep.png|140px|link=NVGate_Tools:_AutoReport|AutoReport]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Tools:_AutoReport|AutoReport]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Generate automated production test reports&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:EditSignal_05.png|140px|link=NVGate_Tools:_EditSignal|EditSignal]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Tools:_EditSignal|EditSignal]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Edit and synthesize recorded time signals&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:candbc.png|140px|link=NVGate_Tools:_CanBus_Import_.dbc|CanBus Import]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Tools:_CanBus_Import_.dbc|CanBus Import]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Import CAN bus variables from .dbc files&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:IRIG.png|140px|link=NVGate_IRIG_Marker|IRIG Marker]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_IRIG_Marker|IRIG Marker]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Synchronize measurements with IRIG-B time code&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:HP_analyzer.png|140px|link=NVGate_HP_Spectrum_Analyzer|HP Spectrum Analyzer]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_HP_Spectrum_Analyzer|HP Spectrum Analyzer]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Emulate HP/Agilent spectrum analyzer display modes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:gps_navilock.jpg|140px|link=NVGate_DC_Simulated_Manager#GPS|GPS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_DC_Simulated_Manager#GPS|GPS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Log GPS position as DC simulated channels&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:display_torsion.PNG|140px|link=Display_Torsion_ODS|Display Torsion ODS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Display_Torsion_ODS|Display Torsion ODS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Visualize torsional operational deflection shapes&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:weather.png|140px|link=NVGate_DC_Simulated_Manager#Weather_station|Weather station]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_DC_Simulated_Manager#Weather_station|Weather station]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Integrate Davis weather station data as DC channels&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Axis_WholeBody.png|140px|link=Human_Vibration|Human Vibration]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Human_Vibration|Human Vibration]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Whole-body &amp;amp; hand-arm vibration analysis (ISO 2631)&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Indicator_diagram_steam_admission.png|140px|link=Addons:PV_Diagram|PV Diagram]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[Addons:PV_Diagram|PV Diagram]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Pressure-Volume indicator diagram for engine analysis&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:EVHV_01.gif|140px|link=NVGate_EVHV|EVHV]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_EVHV|EVHV]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Electrical motor &amp;amp; inverter diagnostic solution&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Engine_diag3.png|140px|link=NVGate_Diesel_Engine_Vibration_Solution:_EngineDiag|EngineDiag]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[NVGate_Diesel_Engine_Vibration_Solution:_EngineDiag|EngineDiag]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Diesel engine vibration diagnostic solution&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:Sweep.png|140px|link=THD_Sweep_Measurement|THD]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[THD_Sweep_Measurement|THD sweep measurement ]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Total harmonic distortion with a sweep sine measurement&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:165px; border:1px solid #c8ccd1; border-radius:8px; overflow:hidden; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,0.09); text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#eef2fb; padding:12px; min-height:110px; display:flex; align-items:center; justify-content:center;&amp;quot;&amp;gt;[[File:11_main_full.png|140px|link=SRS_Tool_—_Shock_Response_Spectrum_Analyser|SRS]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:8px 6px 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; font-size:0.9em; margin-bottom:4px;&amp;quot;&amp;gt;[[SRS_Tool_—_Shock_Response_Spectrum_Analyser|SRS Tool]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:0.78em; color:#555; line-height:1.35em;&amp;quot;&amp;gt;Shock Response Spectrum measurement&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=NVGate_Synchronous_Order_Analysis&amp;diff=12868</id>
		<title>NVGate Synchronous Order Analysis</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=NVGate_Synchronous_Order_Analysis&amp;diff=12868"/>
		<updated>2026-04-21T15:10:34Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Order FFT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:NVGate]]&lt;br /&gt;
[[category:WikiOros]]&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Order analysis and order tracking with OROS NVGate&lt;br /&gt;
|keywords=Order analysis,order tracking, SOA, Synchronous oroder analysis, Vibration&lt;br /&gt;
|description=Order analysis is a set of specialized measurement techniques often used when making vibration measurements on rotating machine. With the Order Analysis option, you can make RPM profiles, order tracking and order spectrum.&lt;br /&gt;
}}&lt;br /&gt;
Order analysis is a set of specialized measurement techniques often used when making vibration measurements on rotating machine. With the Order Analysis option, you can make RPM profiles, order tracking and order spectrum.&lt;br /&gt;
&lt;br /&gt;
To make order measurements, you must use a proper tach signal which is synchronized with the rotational speed of the machine.&lt;br /&gt;
&lt;br /&gt;
==Outlines==&lt;br /&gt;
===What is Order Tracking?===&lt;br /&gt;
&lt;br /&gt;
When doing a measurement on rotating machinery, it is often useful to display a spectrum in the behavior of harmonics or sub harmonics related with the shaft speed.&lt;br /&gt;
&lt;br /&gt;
If the shaft speed varies, each harmonic of the shaft rate needs to appear at a fixed point into the spectrum, so called order.&lt;br /&gt;
&lt;br /&gt;
The basics to make such analysis are to control the sampling rate of the analyzed signals in order to get an equal number of samples independently of the shaft speed.&lt;br /&gt;
&lt;br /&gt;
The classical way uses a tracking ratio synthesizer based on phased locked loop oscillator which generates a constant number of sampling pulses during one shaft revolution. This synthesizer also controls variable cut off frequency of analog anti-aliasing filters. They are adapted to the variable sampling frequency that is itself depending on the frequency bandwidth.&lt;br /&gt;
&lt;br /&gt;
===How the OROS Analyzer Works?===&lt;br /&gt;
&lt;br /&gt;
====Basics====&lt;br /&gt;
&lt;br /&gt;
The OROS analyzer is based on a variable digital resampling technique implemented as software in a digital signal processor chip.&lt;br /&gt;
&lt;br /&gt;
This approach gives an improved performance over analog solutions along with reduced hardware cost and reduced complexity.&lt;br /&gt;
&lt;br /&gt;
The figure below shows a general block diagram of digital resampling technique.&lt;br /&gt;
&lt;br /&gt;
The signals to be analyzed are sampled at a constant rate with fixed antialiasing filters. These filters have a slope greater than 200dB per octave in the transition band.&lt;br /&gt;
&lt;br /&gt;
The tach signal is sampled and processed in order to compute sampling rate of tach revolution pulses. The arrival time of a tach pulse is computed using interpolation between 2 samples. This tach processing also computes instantaneous speed in order to adjust the cut off frequency of the low pass digital filter used in resampling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_01_1024.png|700px|none]]&lt;br /&gt;
&lt;br /&gt;
''Block diagram of digital order analyzer''&lt;br /&gt;
&lt;br /&gt;
After low pass digital filtering, the analyzed signals are resampled and a standard FFT analysis is done.&lt;br /&gt;
&lt;br /&gt;
====Resampling date computation====&lt;br /&gt;
&lt;br /&gt;
The tach processing first measures date arrival of tach pulses and next computes resampling dates as shown in the figure below:&lt;br /&gt;
&lt;br /&gt;
[[Image:SOA_01.png|700px|none]]&lt;br /&gt;
&lt;br /&gt;
For a revolution, resampling dates are computed taking into account current rev duration, next one and both preceding ones.&lt;br /&gt;
&lt;br /&gt;
A function of sampling rate versus revolution or shaft position is evaluated and for the current revolution resampling rates are computed for equally spaced shaft positions.&lt;br /&gt;
&lt;br /&gt;
If the number of tach pulses per revolution is not an integer, the tach processing calculates by interpolation the new dates of the tach pulses in order to always have an integer number of revolution for the resampling process.&lt;br /&gt;
&lt;br /&gt;
[[Image:SOA_02.png|700px|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So using backward and forward tach information gives an accurate evaluation of resampling dates. But this method needs to store signals to be analyzed so that when a tach pulse arrives, the analyzer computes dates of the previous revolution (use of digital signal processors).&lt;br /&gt;
&lt;br /&gt;
This method makes no basic assumption about shaft speed variation profile and compared to other methods, it always gives exact resampling dates at the start and the end of a revolution.&lt;br /&gt;
&lt;br /&gt;
So in case of a large speed variation in a revolution, the analyzer can always deliver valuable spectrums. During implementation the operator can adjust the speed variation threshold over which measurements are automatically rejected.&lt;br /&gt;
&lt;br /&gt;
====Signal resampling====&lt;br /&gt;
&lt;br /&gt;
The digital resampling of analyzed signals needs a complementary antialiasing filter whose cut off is continuously adjusted to a frequency equal to the product of the maximum analyzed order by instantaneous shaft speed.&lt;br /&gt;
&lt;br /&gt;
The resampling also needs X signal interpolation between samples. The variable filtering and interpolation is based on an OROS proprietary wich is the most accurate and powerful on the market.&lt;br /&gt;
&lt;br /&gt;
Compared to other methods, the OROS one has the main advantage to be able to work with the full available frequency range of the original sampled signal, so the OROS order tracking analyzer is able to work with signals up to 40 kHz with initial sampling at 102.4 kHz.&lt;br /&gt;
&lt;br /&gt;
====Signal analysis====&lt;br /&gt;
&lt;br /&gt;
The signal analyzer does FFT processing on resampled signal.&lt;br /&gt;
&lt;br /&gt;
This signal is always taken by starting synchronously on a tach revolution pulse in order to be able to deliver absolute phase information of each order.&lt;br /&gt;
&lt;br /&gt;
Sub-ranging order analysis is available with order resolution down to 1/32. In this case the FFT processing is done by using signal corresponding to N consecutive shaft revolutions and so gives a 1/N order resolution.&lt;br /&gt;
&lt;br /&gt;
The angular and spectral averaging are implemented. Angular averaging is necessary when absolute phase resolution and/or rejection of signals unrelated to shaft rotation are needed.&lt;br /&gt;
&lt;br /&gt;
Spectral averaging can compute power spectrums and cross power spectrums with associated results. In this mode, weighting windows are available in order to reduce side lobe effects of signals not related to shaft rotation.&lt;br /&gt;
&lt;br /&gt;
== NVGate SOA Plug in==&lt;br /&gt;
This plug-in is used to perform synchronous order tracking (it is also used to compute time signals in post analysis mode with the Player module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_18.png|700px|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set an accurate range peak is advice for more accurate results.&lt;br /&gt;
===Connect track and display===&lt;br /&gt;
We advise using [[NVGate_Software_overview#GoToResult|GoToResult]] result Wizard for connecting track and display SOA results.&lt;br /&gt;
[[File:Go_to.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
===Available results:===&lt;br /&gt;
&lt;br /&gt;
With Resolution being the value of the ''Synch. order x/Order FFT /Resolution ''setting:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background:white&amp;quot; border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''Type'''&lt;br /&gt;
|'''Size'''&lt;br /&gt;
|'''Dimension'''&lt;br /&gt;
|'''Domain'''&lt;br /&gt;
|'''Save'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Filtered signal&lt;br /&gt;
|256 pt&lt;br /&gt;
|2D &lt;br /&gt;
|time&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Triggered block&lt;br /&gt;
|(Resolution-1)*2.56&lt;br /&gt;
|2D &lt;br /&gt;
|angle(rev)&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Trigger Shaftview&lt;br /&gt;
|(Resolution-1)*2,56&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|DC&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|RMS&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Min level&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Max level&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Peak&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Peak-Peak&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Crest Factor&lt;br /&gt;
|1pt&lt;br /&gt;
|2D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Avg. block&lt;br /&gt;
|(Resolution-1)*2.56&lt;br /&gt;
|2D &lt;br /&gt;
|angle(rev)&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Avg. Trigger Shaftview&lt;br /&gt;
|(Resolution-1)*2,56&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Weighted block&lt;br /&gt;
|(Resolution-1)*2.56&lt;br /&gt;
|2D &lt;br /&gt;
|angle(rev)&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order spectrum&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order inst. spectrum&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order avg. spectrum&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order &amp;amp; Overall&lt;br /&gt;
|1 pt&lt;br /&gt;
|1D &lt;br /&gt;
|&amp;amp;nbsp; &lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Inst. Order cross-spectrum&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Avg. order cross-spectrum&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|ORF H1&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|ORF H2&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order Coherence&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order profile&lt;br /&gt;
|2048 pt max&lt;br /&gt;
|2D &lt;br /&gt;
|time&lt;br /&gt;
|Display only&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Cepstrum*&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D&amp;lt;br&amp;gt;&lt;br /&gt;
|Roder&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|InstCepstrum*&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D&lt;br /&gt;
|Roder&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|AvgCepstrum*&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D&lt;br /&gt;
|Roder&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Correlation*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|instCorrelation*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|AvgCorrelation*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|CrossCorrelaion*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|InstCrossCorrelaion*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|AvgCrossCorrelaion*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Synthesized Orbit&lt;br /&gt;
|(Resolution-1)*2,56&lt;br /&gt;
|2D &lt;br /&gt;
|angle(rev)&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Raw Orbit&lt;br /&gt;
|Nb Pulse/rev&lt;br /&gt;
|2D &lt;br /&gt;
|angle(rev)&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Filtered signal''': This result is available if a filter is selected in the ''Synch. order x/Channel x/Input filter'' setting. It displays the input time signal after filtering it.&lt;br /&gt;
* '''Triggered block''': This displays the signal after being triggered by the event selected with the ''Synch. order x/Trigger/Trigger ''setting'' .''&lt;br /&gt;
* '''Avg. block''': This result is available if the value of the ''Synch. order x/Average/Domain ''setting is Time. It displays the time signal block average.&lt;br /&gt;
* '''Weighted block''': This result displays the signal after being weighted by the weighting window selected with the ''Synch. order x/Channel x/Weighting window'' setting.&lt;br /&gt;
* '''Ord spectrum''': This result is available if the value of the ''Synch. order x/Average/Domain ''setting is Time. It displays the result of the Synchronous order processing results after angular averaging.&lt;br /&gt;
* '''Ord inst. spectrum''': This result is available if the value of the ''Synch. order x/Average/Domain ''setting is Spectral. It displays the Synchronous order processing results.&lt;br /&gt;
* '''Ord avg. spectrum''': This result is available if the value of the ''Synch. order x/Average/Domain ''setting is Spectral. It displays the average order instant spectrum results.&lt;br /&gt;
* '''Order &amp;amp; Overall''': It displays computation of the orders chosen with the ''Synch. order x/Channel x/Tracked order'' setting and the Overall level if the ''Synch. order x/Overall Analysis/Band power tracking ''is set to On.&lt;br /&gt;
*  '''Inst. Order cross-spectrum''': This result is not available if there is no cell checked in the ''Synch. Order x /Order FFT/Cross spectrum ''matrix. It displays the instant cross spectrum between the 2 selected channels.&lt;br /&gt;
* '''Avg. cross-spectrum''': This result is not available if there is no cell checked in the ''Synch. orderx /Order FFT/Cross spectrum ''matrix. It displays the averaged cross spectrum average results.&lt;br /&gt;
* '''ORF H1''': This result is not available if there is no cell checked in the matrix of the ''Synch. Order x /Order FFT/Cross spectrum ''matrix. It displays the Order Response Response Function H1, see Appendix for details.&lt;br /&gt;
* '''ORF H2''': This result is not available if there is no cell checked in the matrix of the ''Synch. Order x /Order FFT/Cross spectrum ''matrix. It displays the Order Response Function H2, see Appendix for details.&lt;br /&gt;
* '''Order Coherence''': This result is not available if there is no cell checked in the ''Synch. Order x /Order FFT/Cross spectrum ''matrix. It displays the  ORF H1/H2 ratio.&lt;br /&gt;
* '''Order profile''': It displays changes in the Order &amp;amp; Overall result.&lt;br /&gt;
* '''Order AutoCorrelation''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x x/Average/Domain ''setting value is Time.&lt;br /&gt;
* '''Order CrossCorrelation''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x x/Average/Domain ''setting value is Time. This result is not available if there is no cell checked in the ''Synch. orderx /Order FFT/Cross spectrum ''matrix&lt;br /&gt;
* '''Inst. Order AutoCorr''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x /Average/Domain is ''Spectral or Frequency synchronous.&lt;br /&gt;
* '''Avg. Order AutoCorr''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x /Average/Domain is ''Spectral or Frequency synchronous.&lt;br /&gt;
* '''Inst. Order CrossCorr''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x x/Average/Domain is ''Spectral or Frequency synchronous. This result is not available if there is no cell checked in the ''Synch. Order x /Order FFT/Cross spectrum ''matrix&lt;br /&gt;
* '''Avg. Order CrossCorr''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x x/Average/Domain is ''Spectral or Frequency synchronous. This result is not available if there is no cell checked in the ''Synch. Order x /Order FFT/Cross spectrum ''matrix&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
[[Image:Reports_Tools_Ribbons_396.png|framed|right]]&lt;br /&gt;
[[File:order_ASB.png|framed]]&lt;br /&gt;
Note: Up to 2 SOA plug-in can be present in the software configuration, each of them running independent analyses on the same or different channels.&lt;br /&gt;
&lt;br /&gt;
====Channel====&lt;br /&gt;
Contains the settings related to the source input.&lt;br /&gt;
&lt;br /&gt;
* '''Source''': Input source to be analyzed. It may come from the Front-end input or from the Player in post analysis mode (see the post analysis chapter). In post analysis mode, only the tracks with the same signal bandwidth can be plugged.&lt;br /&gt;
* '''Input filter''': filter to be used for filtering the source before the analysis. The Filters that are not compatible with the upper frequency of the plug-in cannot be selected (see the Filter builder chapter). The A and C weighting on time domain are available in the NVGate&amp;lt;sup&amp;gt;®&amp;lt;/sup&amp;gt; filter list.&lt;br /&gt;
* '''Phase shift.''' This setting is independent for each channel and can be change in the range of &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;/- 720° in order to cover up the cycle duration of 4 stroke engines in both directions (forward/backward).&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_20.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
* '''Tracked order''': Orders to be tracked by the Synchronous Order Tracking. You can select up to eight different orders per channel, and there are 2 settings for each order:&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_21.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
* '''State''': ON if you want the order to be computed&lt;br /&gt;
* '''Order number''': Select the number of the order you want to track, from 0.001 up to 800&lt;br /&gt;
* '''Weighting window''': window used to weight the signal before processing. There are 6 fixed windows: Uniform, Hanning, Hamming, Kaiser Bessel, and Flat top; 3 customized windows: Force, Response (see the Time Windows chapter) For the window characteristics, see the Appendix.&lt;br /&gt;
====Tach====&lt;br /&gt;
Contains the Synchronous order analysis tachometer settings.&lt;br /&gt;
&lt;br /&gt;
* '''Associated tach'''[[Image:Reports_Tools_Ribbons_400.png]]: The selected tachometer enables the plug-in to perform Synchronous Order Tracking.&lt;br /&gt;
* '''Phase reference''': selects the original phase when computing the absolute spectrum phase.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background:white&amp;quot; border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;92%&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''Phase reference'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Pulse Edge&lt;br /&gt;
|The original phase is referenced from the tach edge detection, i.e. the position of the unbalance. It gives the absolute phase.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Pulse Center&lt;br /&gt;
|The spectrum phase is corrected with the phase of the first order of the tach signal (the correction is applied to all the spectrum lines proportionally to the number of lines). This corresponds to the center of the tach pulse. This setting can be used only if the tach signal is analyzed (the source of the tach must be a source of the analyzer). It gives a relative phase.&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example if the analyzed signal is a pure sine and if this signal is also applied to the tach input (with a threshold of 0 Volt and a positive slope), the measured spectrum phase at the sine frequency is:&lt;br /&gt;
&lt;br /&gt;
'''Pulse Edge:''' -90 °&lt;br /&gt;
&lt;br /&gt;
'''Pulse Center:''' 0 ° (whatever the threshold level of the tach is)&lt;br /&gt;
&lt;br /&gt;
* '''Accepted speed variation''': Percentage of variation of the tach speed accepted during one revolution. The default value is 100%. It means that this parameter is not taken account.&lt;br /&gt;
*  '''Sampling pulse''': Select an Ext. Synch input declared as &amp;quot;Sampling&amp;quot;. When this setting differ from &amp;quot;none&amp;quot;, the angular sampling of the SOA plug-in is based on the actual sampling pulse phase.&lt;br /&gt;
The angular sampling allows getting the exact angle (or phase) of the events in the machine cycle. The results are event better using the time domain averaging (i.e. angular). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[NVGate_Torsional#Angular_sampling_for_SOA_analysis|Please read the sampling page for more info.]]&lt;br /&gt;
&lt;br /&gt;
====Trigger====&lt;br /&gt;
Contains the settings related to triggering events and how to start, and stop signal computation. Note that the trigger is always done on the next available revolution pulse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Order_analysis_24.png|framed|none]]&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Start''': defines the event to start the analysis. The user can choose any event among the list of defined events. By default only the Free run and Manual events are available. The user can define another event in the &amp;quot;Event Definition&amp;quot; shared resources and then use this event for the &amp;quot;Start&amp;quot; condition.&lt;br /&gt;
* '''Stop''': defines the event to stop the analysis. The user can choose any event among the list of defined events. By default only the Free run and Manual events are available. The user can define another event in the &amp;quot;Event Definition&amp;quot; shared resources and then use this event for the &amp;quot;Stop&amp;quot; condition.&lt;br /&gt;
* '''Trigger''': defines an event to compute the Order Spectrum on one block of time signal. After the computation, the plug-in waits for a new event to compute another block.&lt;br /&gt;
'''Warning''': SOA will not start without any tachometer, the SOA will stay in the status &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;triggering&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* '''Repeat''': This setting allows selecting a condition for the plug-in to be restarted. If an event is selected as a Start event, the option New start is available, and when this mode is selected each Start event restarts the plug-in. The mode End of averaging is available when the value of the ''Sync Order x/Average/Type ''setting is different from the Exponential mode, it restarts the plug-in when the averaging is finished. It is set to &amp;quot;Off&amp;quot; except for linear average when it is set to &amp;quot;End of averaging&amp;quot;. In this case, the &amp;quot;Avg duration&amp;quot; gives the periodicity of the average restart.&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_25.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
- Mode Repeat on &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;end of averaging&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Order_analysis_26.png|framed|none]]&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Run&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; corresponds to the start of the analyzer. The start is the beginning of average duration. At the end of the first average, the second average will start and so on till the end of the integration time (even if the last short time integration duration is not over). Each averaging has the same size, except the last that can be smaller.&lt;br /&gt;
&lt;br /&gt;
- Mode Repeat on &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;New start&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_27.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Run&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; trigger the analyzer, but the average begins at the start event (set in the event definition). This averaging stops at the end of average duration or at the stop event. Then the next averaging is waiting for the new start event to occur.&lt;br /&gt;
&lt;br /&gt;
In case a new event occurs during a previous averaging, this start event won&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;t be effective because the previous average duration is not over, you can only set other event after the end of the previous one.&lt;br /&gt;
&lt;br /&gt;
* Trigger delay: defines a trigger delay in revolution&lt;br /&gt;
* Pulse/rev.: defines the number of pulses per revolution of the signal used as trigger source. This setting is available if:&lt;br /&gt;
* The SOA is set on spectral averaging&lt;br /&gt;
* The &amp;quot;Trigger&amp;quot; event is a &amp;quot;edge detection&amp;quot; event (on analogical or ExtSync channel)&lt;br /&gt;
If the setting value is higher than 1, the &amp;quot;Overlap&amp;quot; and the &amp;quot;Overlap in rev&amp;quot; are forced to their maximum and are not modifiable. The overlap between 2 spectra is equal to ((pulse_per_rev-1)/pulse_per_rev) rotations i.e. a delay of 1/pulse_per_rev revolution between 2 spectra. This setting is provided for information only. It is modifiable in the trigger source settings.&lt;br /&gt;
&lt;br /&gt;
* '''Accept mode''': selects the method of rejecting signal blocks.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background:white&amp;quot; border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;93%&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''Mode'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Normal&lt;br /&gt;
|All blocks are accepted&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Overload rejection&lt;br /&gt;
|Blocks with an overload are automatically rejected&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Average====&lt;br /&gt;
Contains the settings related to the type of averaging of the signals to be computed.&lt;br /&gt;
&lt;br /&gt;
* '''Domain'''[[Image:Reports_Tools_Ribbons_400.png]]: You can chose between Spectral and Angular: the spectral domain averaging computes the average after Order spectrum processing, while angular averaging the average before Order spectrum processing.&lt;br /&gt;
* '''Size''': The number of signal blocks used to compute the average, from 1 up to 1000000000.&lt;br /&gt;
* '''Type''': The method of averaging the signal. There are four different averaging modes: Linear, Exponential, Peak hold, and Referenced Peak hold.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background:white&amp;quot; border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''Type'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Linear&lt;br /&gt;
|Linear averaging of results is carried out on the value of the Size setting from the same sub-module. The plug-in automatically stops when the given number of averages is reached.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Exponential&lt;br /&gt;
|In this mode of computation, each new average is obtained by adding its previous value the new Order spectrum result divided by the value of the Size setting, and subtracting its previous value divided by the value of the Size setting too.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Peak hold&lt;br /&gt;
|This method processes the peaks found in their spectrum power density for each channel, and for a number of Order spectrum analysis determined by the size setting. The plug-in automatically stops when a given number of averages is reached. For each order line, each time the value of the instantaneous spectrum is greater than the value of the average order spectrum, the average order spectrum value is equal to the instantaneous order spectrum value. Otherwise, the average order spectrum value is not modified.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Ref Peak hold&lt;br /&gt;
|&lt;br /&gt;
[[Image:Order_analysis_28_436.png|framed|none]]&lt;br /&gt;
&amp;lt;br&amp;gt;This method processes the peaks found in their spectrum power density for each channel, and for a number of FFT analyses determined by the size setting. The FFT plug-in automatically stops when a given number of averages is reached. When this mode is selected, a new setting called Reference channel appears in the same sub-module; if None is selected, the average processing is the same as the Peak hold mode. If a channel is selected, then there are two different behaviors depending on the channel:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;For the reference channel: For each frequency line, each time the value of the instantaneous spectrum is greater than the value of the average spectrum, the average spectrum value is equal to the instantaneous spectrum value. Otherwise, the average reference spectrum value is not modified.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;For the other channels: For each frequency line, for each modification of the average reference spectrum, the average channel spectrum is equal to the instantaneous channel spectrum values, even if it is less than the average spectrum value. The modification of the reference and the other channels is synchronized.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;In this example, the modified spectrum lines are between '''A''' and '''B''' for both reference channel and response channel. The spectrum lines between '''B''' and '''D''' in the response channel are not updated. The modification of the reference and response channels is synchronized&amp;lt;br&amp;gt;Each time the peak value of the reference channel has been modified, the '''averaged cross spectrum''' is equal to the instantaneous reference spectrum by the response spectrum product. In this example, the modified spectrum lines are between '''A''' and '''B'''. The functions as transfer function (where the reference channel is taken into account) will be modified between '''A''' and '''B'''.&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Hidden/fixed: Peak hold and Referenced Peak hold are only available if the Domain setting from the same sub-module is set to Spectral.''&lt;br /&gt;
&lt;br /&gt;
* '''Reference channel''': channel to be used as a reference in Referenced Peak hold averaging mode. You can choose between the channels that are plugged into the plug-in. If None is selected, the average processing is the same as the Peak hold mode.&lt;br /&gt;
''Hidden/fixed: This setting is only available when the Referenced Peak hold averaging mode is selected.''&lt;br /&gt;
&lt;br /&gt;
====Order FFT====&lt;br /&gt;
Transforms the order blocks into order spectra.&lt;br /&gt;
&lt;br /&gt;
[[File:513.jpg]]&lt;br /&gt;
* '''Max speed''': defines the highest angular speed accepted. All revolutions with a speed higher than Max speed are rejected by the analysis.&lt;br /&gt;
The Max speed value is given by:&lt;br /&gt;
&lt;br /&gt;
Max speed (RPM) = Frequency Range (Hz) / Max Order * 60&lt;br /&gt;
&lt;br /&gt;
If a tach is connected to this plug-in, the max speed value is forced to the value defined in tachometer properties.&lt;br /&gt;
&lt;br /&gt;
''To know more, see  § 1.4.2.1 tachometer /tachs.''&lt;br /&gt;
&lt;br /&gt;
The SOA Upper frequency is limited by the High sampling of the front-end or by the Max bandwidth of the Player in post-analysis.&lt;br /&gt;
&lt;br /&gt;
* '''Min speed''': defines the lowest measured angular speed accepted. All revolutions with a speed lower than Min speed are rejected by the analysis.&lt;br /&gt;
The RPM velocity dynamic is defined by:&lt;br /&gt;
&lt;br /&gt;
Max Speed / Min Speed = 512&lt;br /&gt;
&lt;br /&gt;
* '''Max order'''[[Image:Reports_Tools_Ribbons_398.png]]: defines the highest order that can be computed. Range from 6,25 to 800. &lt;br /&gt;
*'''Order resolution'''[[Image:Reports_Tools_Ribbons_400.png]]:: Defines the resolution of the Order spectra. Resolution = Max order /  Number of lines&lt;br /&gt;
Available resolutions are: 1, ½, ¼, 1/8, 1/16 and 1/32 of order&lt;br /&gt;
*'''Overlap''': defines the amount of overlap of blocks of signal between 2 successive Order FFT computations expressed in revolutions, from 0 to 1/Order resolution For example: if ''Order resolution'' setting is 1/8, then Overlap range is from 0 to 7.&lt;br /&gt;
&lt;br /&gt;
* '''Angular Overlap''': defines the overlap (in angle) corresponding to a rotation fraction. This setting is comprised between 0 and 1 rotation-SOA angular resolution with one rotation equal to 2*PI or 360° depending on the physical quantity used for the angle. The resolution (in radian) is equal to 2*PI/number of samples per rotation (=(number of lines -1)*2.56*order resolution). This setting is only available for a spectral averaging mode (in time domain it is forced to 0 and it is not modifiable). To have the maximal overlap when the resolution is &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;1, the &amp;quot;Overlap&amp;quot; and the &amp;quot;Overlap in rev&amp;quot; must be at their maximum.&lt;br /&gt;
* '''Upper frequency''': The Upper frequency that can be processed by the plug-in. It depends on two settings: ''Max speed'' setting and ''Max order'' setting. If Max speed is in RPM you have the formula: Upper Frequency = MaxOrder * (MaxSpeed/60). For example Max speed = 770 RPM, Max Order = 100 then Upper Frequency = 100* (770/60) = 1283.333 Hz&lt;br /&gt;
''Hidden/fixed: fixed''&lt;br /&gt;
&lt;br /&gt;
* '''Resolution''': The number of lines computed by the Order FFT: this depends on two settings: ''Max order'' setting and ''Order resolution'' setting. Resolution = (MaxOrder / OrderResolution) &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt; 1. For example: if Max order = 50 and Order resolution = 1/8, then Resolution = 50 * 8 &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt; 1= 401 lines.&lt;br /&gt;
''Hidden/fixed: fixed''&lt;br /&gt;
&lt;br /&gt;
* '''Phase Ref''': The phase reference for the computation of the Order FFT&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background:white&amp;quot; border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;59%&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''Phase reference'''&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Cosine&lt;br /&gt;
|Default value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Sine&lt;br /&gt;
|Leads to a &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;90° phase Offset&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Reverse cross function:''' this setting allows calculating the cross function of the greyed part of the Cross spectrum setting. Default value is True except on cascaded mode (multiple hardware) as the number of reference spectrum to be carried between the analyzers may lead to a dramatic loss of performances.&lt;br /&gt;
* '''Cross spectrum''': Matrix used for the selection of the computed cross spectra. Only the upper half of the matrix can be used; when a box is checked, two cross spectra are computed with each of both channels being the reference. Selecting the cross spectra is necessary to have access to some results: instant order cross spectrum, order average cross spectrum, ORF H1, ORF H2 and Order coherence.&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_29.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_30.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
* '''Orders Phase ref''': This function allows you to use the cross-spectrum phase value for the phase of the order (relative phase). The cross-spectrum phase is the relative phase between the input signal of the current channel and the reference input signal associated to this channel. Whatever the average mode, the average cross-spectrum is always used to calculate the orders phase.&lt;br /&gt;
'''- No activated''':  The phase of the order is the spectrum phase of the frequency corresponding to the order value (absolute phase).&lt;br /&gt;
&lt;br /&gt;
To know more, see ''§1.5.2.2 Ext Syncs/Tach/Phase Ref  p1-115.''&lt;br /&gt;
&lt;br /&gt;
- '''Activated''':  choose the channel used to calculate the orders phase.&lt;br /&gt;
&lt;br /&gt;
If a channel is selected, &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Phase Ref&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; in ''SOA/Tach'' is not activated.&lt;br /&gt;
&lt;br /&gt;
Note: This set up doesn&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;t change the spectrum phases and consequently doesn&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;t change the orders phases extracted from a waterfall of spectra.&lt;br /&gt;
&lt;br /&gt;
* '''Range''': Frequency range of the plug-in, set automatically in order to process the ''Sync Order x/Order FFT/Upper frequency'' value. For optimum performance, the ''Front End/Input sampling'' setting value should be close to the value of the Range setting multiplied by 2.56. For example: for a Range value of 20kHz, the input sampling should be 20000*2.56 = 51.2kS/s.&lt;br /&gt;
''Hidden/fixed: fixed''&lt;br /&gt;
&lt;br /&gt;
====Overall analysis====&lt;br /&gt;
Calculation of the order bands sum.&lt;br /&gt;
&lt;br /&gt;
* '''Band ''''''power tracking'''&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;: &amp;lt;/font&amp;gt;Switches computation of the overall level result &amp;quot;on or off&amp;quot;.&lt;br /&gt;
* '''Lower Order''': Specifies the lower order of the overall computation order range&lt;br /&gt;
* '''Upper Order''': Specifies the upper order of the overall computation order range&lt;br /&gt;
====Correlation====&lt;br /&gt;
Calculation of the Auto Correlation and the Cross Correlation in the angle domain.&lt;br /&gt;
[[File:Correlation2.png|left]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Correlation: '''Allows to activate or not the calculation of the correlation.&lt;br /&gt;
All results of the correlation are in the angle domain with –T/2 et T/2 where T equal to the duration of the trigger block of the FFT.&lt;br /&gt;
&lt;br /&gt;
* '''Weighting  window: '''Choose between following values of this setting:&lt;br /&gt;
Three types of correlation window are available:&lt;br /&gt;
&lt;br /&gt;
'''Uniform '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;-T/2, T/2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; (where T is the trigger block length): All the window coefficients are equal to 1. For best results with the Uniform weight window, you should use signal sources that are self-windowing, such as transients, burst, and periodic waveforms (signal period must be a multiple of the weight window length). In order to have the trigger point (T0) at the center of the time trigger block, the trigger Delay must be set to –T/2'''.'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_37.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
'''Centered Zero Padding '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;-T/4, T/4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; (where T is the trigger block length): Only the central part of the window (representing the half-length) is not null. This weight window must be used with random noise. In order to have the trigger point (T0) at the center of the time trigger block, '''the trigger Delay must be set to –T/4 '''(where T is the trigger block length)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF00FF&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Order_analysis_38.png|none]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Left Zero Padding''' &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;0, T/2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; (where T is the trigger block length): Only the first half of the window is not null. This weight window must be used with random noise. In order to have the trigger point (T0) at the beginning of the time trigger block, '''the trigger Delay must be set to 0.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Order_analysis_39.png|framed|none]]&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the correlation is activated then all results of the SAO will be affected by the weighting windows of the correlation. When the Correlation setting is deactivated the weighting windows by default (Hanning) is applied on all SOA plug-in. inputs&lt;br /&gt;
&lt;br /&gt;
Notes: Results from the correlation are normalized.&lt;br /&gt;
&lt;br /&gt;
'''Considerations to obtain good results when making correlation measurement.'''&lt;br /&gt;
&lt;br /&gt;
* Use input '''AC '''coupling. Both auto correlation and cross correlation are disturbed by DC offset in the input signal.&lt;br /&gt;
* Use appropriate trigger mode and trigger delay. The trigger mode should be different from free run. The trigger Delay must be set to –T/2 (where T is the time signal block length) with the Uniform and Centered Zero Padding correlation weighted window (and 0 for the Left Zero Padding window). But in some cases, especially with the Centered Zero Padding and Left Zero Padding window (as these function types attenuate parts of the trigger signal block), the trigger Delay must be adjusted to position the input signal with respect to time.&lt;br /&gt;
&lt;br /&gt;
===SOA Status===&lt;br /&gt;
All statuses are available to add to the control panel&lt;br /&gt;
&lt;br /&gt;
====Sync. Order x====&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_40.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
The current plug-in status is synthesized in a special progress-bar. This progress bar is automatically displayed in the &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;control panel&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; when the plug-in is active (i.e. as soon as at least 1 input is connected to the Sync Order plug-in). This status is called &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Sync. Order x&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; (x is 1 or 2) and it is available in the status ASB tree (see customize control panel).&lt;br /&gt;
&lt;br /&gt;
This setting displays the averaging count (i.e. a current analyzed block number), the plug-in state and the real-time status.&lt;br /&gt;
&lt;br /&gt;
* '''State''': block number analyzed&lt;br /&gt;
* '''Run:''' The SOA plug-in is computing order spectra and averaging it.&lt;br /&gt;
* '''Stop:''' The SOA plug-in is stopped.&lt;br /&gt;
* '''Trig:''' The SOA plug-in is waiting for next block; i.e. next trigger event (block triggering) or first start event (triggering)&lt;br /&gt;
* '''Pause: '''The SOA plug-in averaging is paused&lt;br /&gt;
* '''Waiting:''' The SOA plug-in averaging is waiting for the acquisition to be accepted or rejected (in structural mode).&lt;br /&gt;
&lt;br /&gt;
'''Notes''': in exponential averaging mode the average count stops increasing as soon as the set value is reached.&lt;br /&gt;
&lt;br /&gt;
The way the status bar is displayed, depends on the type of averaging selected:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Linear&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;''', '''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Peak hold&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; '''or '''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Ref peak hold&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;: '''the progress bar is filled from left to right.&lt;br /&gt;
* '''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Exponential&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;''': the progress bar is filled from right to left with a flashing until the end of the acquisition.&lt;br /&gt;
The color of the background bar and of the text depends on real-time status:&lt;br /&gt;
&lt;br /&gt;
* ''Green background and white or black text'': acquisition in real-time.&lt;br /&gt;
* ''Red background and white or black text'': the current acquisition is not real-time (current block is not analyzed).&lt;br /&gt;
* ''Green background and red text'': the current acquisition is real-time, but since start not all the blocks were analyzed.&lt;br /&gt;
&lt;br /&gt;
====SOAx cur.blk====&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_41.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
'''SOA cur. blk''' is a status that shows if the measurement has been triggered (for long time acquisition) and the progression in the block.&lt;br /&gt;
&lt;br /&gt;
* Triggering:&lt;br /&gt;
* Acquiring: displays the evolution of the acquisition in percentage. During the acquiring period, no result is displayed; the result will be display at the end of the acquisition.&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Order_analysis_42.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Paused: the acquisition is paused&lt;br /&gt;
* Stop: the acquisition is stopped&lt;br /&gt;
&lt;br /&gt;
====Trigger State====&lt;br /&gt;
The following scheme describes the different states of the measurement:&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_43.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
The default trigger state is on &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Stop&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; and waiting for a &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Run&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; (start or trigger). Then the state become &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Triggering&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; and is waiting for a start event, the states become &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Block Triggering&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; and is now waiting for a trigger event for being in the &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Running state. If after one second there is no trigger event, the state comes back to &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Block Triggering&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The state is &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Stop&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; after a stop event or at the end of averaging.&lt;br /&gt;
&lt;br /&gt;
'''Note''': all start event, trigger, new revolution or run are ignored in &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;free run&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; mode&lt;br /&gt;
&lt;br /&gt;
====Count====&lt;br /&gt;
This status displays the averaging count processed. This status is expressed in analyzed block.&lt;br /&gt;
&lt;br /&gt;
====Real-time====&lt;br /&gt;
This status displays if the averaging is in real-time or not (i.e. the current block is analyzed or not). If the corresponding signal were not available at this time, the acquisition is not real-time. That means that the treatment is longer than the acquisition. There are three values for this state:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;'''OK'''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;: The acquisition is real-time (all block have been processed and averaged)&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;'''No'''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;: Acquisition was not real-time (some previous blocks are missing in the average).&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;'''-'''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;: The acquisition is currently not real-time (current block is not analyzed an averaged).&lt;br /&gt;
&lt;br /&gt;
====Block overload====&lt;br /&gt;
This status corresponds to the instantaneous overload indication within 1 SOA trigger block, for instance amplitude overload occurred in the current analyzed block. Note that overloaded block may be automatically rejected (see accept mode).&lt;br /&gt;
&lt;br /&gt;
====Analysis overload====&lt;br /&gt;
This status corresponds to overload indication over the measurement period. It means that during the whole measurement period there was (or not) an overload. It memorizes block overloaded.&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:513.jpg&amp;diff=12867</id>
		<title>File:513.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:513.jpg&amp;diff=12867"/>
		<updated>2026-04-21T15:10:15Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:512.jpg&amp;diff=12866</id>
		<title>File:512.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:512.jpg&amp;diff=12866"/>
		<updated>2026-04-21T15:09:16Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: Lmagimel uploaded a new version of File:512.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=NVGate_Synchronous_Order_Analysis&amp;diff=12865</id>
		<title>NVGate Synchronous Order Analysis</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=NVGate_Synchronous_Order_Analysis&amp;diff=12865"/>
		<updated>2026-04-21T15:08:53Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Order FFT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:NVGate]]&lt;br /&gt;
[[category:WikiOros]]&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Order analysis and order tracking with OROS NVGate&lt;br /&gt;
|keywords=Order analysis,order tracking, SOA, Synchronous oroder analysis, Vibration&lt;br /&gt;
|description=Order analysis is a set of specialized measurement techniques often used when making vibration measurements on rotating machine. With the Order Analysis option, you can make RPM profiles, order tracking and order spectrum.&lt;br /&gt;
}}&lt;br /&gt;
Order analysis is a set of specialized measurement techniques often used when making vibration measurements on rotating machine. With the Order Analysis option, you can make RPM profiles, order tracking and order spectrum.&lt;br /&gt;
&lt;br /&gt;
To make order measurements, you must use a proper tach signal which is synchronized with the rotational speed of the machine.&lt;br /&gt;
&lt;br /&gt;
==Outlines==&lt;br /&gt;
===What is Order Tracking?===&lt;br /&gt;
&lt;br /&gt;
When doing a measurement on rotating machinery, it is often useful to display a spectrum in the behavior of harmonics or sub harmonics related with the shaft speed.&lt;br /&gt;
&lt;br /&gt;
If the shaft speed varies, each harmonic of the shaft rate needs to appear at a fixed point into the spectrum, so called order.&lt;br /&gt;
&lt;br /&gt;
The basics to make such analysis are to control the sampling rate of the analyzed signals in order to get an equal number of samples independently of the shaft speed.&lt;br /&gt;
&lt;br /&gt;
The classical way uses a tracking ratio synthesizer based on phased locked loop oscillator which generates a constant number of sampling pulses during one shaft revolution. This synthesizer also controls variable cut off frequency of analog anti-aliasing filters. They are adapted to the variable sampling frequency that is itself depending on the frequency bandwidth.&lt;br /&gt;
&lt;br /&gt;
===How the OROS Analyzer Works?===&lt;br /&gt;
&lt;br /&gt;
====Basics====&lt;br /&gt;
&lt;br /&gt;
The OROS analyzer is based on a variable digital resampling technique implemented as software in a digital signal processor chip.&lt;br /&gt;
&lt;br /&gt;
This approach gives an improved performance over analog solutions along with reduced hardware cost and reduced complexity.&lt;br /&gt;
&lt;br /&gt;
The figure below shows a general block diagram of digital resampling technique.&lt;br /&gt;
&lt;br /&gt;
The signals to be analyzed are sampled at a constant rate with fixed antialiasing filters. These filters have a slope greater than 200dB per octave in the transition band.&lt;br /&gt;
&lt;br /&gt;
The tach signal is sampled and processed in order to compute sampling rate of tach revolution pulses. The arrival time of a tach pulse is computed using interpolation between 2 samples. This tach processing also computes instantaneous speed in order to adjust the cut off frequency of the low pass digital filter used in resampling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_01_1024.png|700px|none]]&lt;br /&gt;
&lt;br /&gt;
''Block diagram of digital order analyzer''&lt;br /&gt;
&lt;br /&gt;
After low pass digital filtering, the analyzed signals are resampled and a standard FFT analysis is done.&lt;br /&gt;
&lt;br /&gt;
====Resampling date computation====&lt;br /&gt;
&lt;br /&gt;
The tach processing first measures date arrival of tach pulses and next computes resampling dates as shown in the figure below:&lt;br /&gt;
&lt;br /&gt;
[[Image:SOA_01.png|700px|none]]&lt;br /&gt;
&lt;br /&gt;
For a revolution, resampling dates are computed taking into account current rev duration, next one and both preceding ones.&lt;br /&gt;
&lt;br /&gt;
A function of sampling rate versus revolution or shaft position is evaluated and for the current revolution resampling rates are computed for equally spaced shaft positions.&lt;br /&gt;
&lt;br /&gt;
If the number of tach pulses per revolution is not an integer, the tach processing calculates by interpolation the new dates of the tach pulses in order to always have an integer number of revolution for the resampling process.&lt;br /&gt;
&lt;br /&gt;
[[Image:SOA_02.png|700px|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So using backward and forward tach information gives an accurate evaluation of resampling dates. But this method needs to store signals to be analyzed so that when a tach pulse arrives, the analyzer computes dates of the previous revolution (use of digital signal processors).&lt;br /&gt;
&lt;br /&gt;
This method makes no basic assumption about shaft speed variation profile and compared to other methods, it always gives exact resampling dates at the start and the end of a revolution.&lt;br /&gt;
&lt;br /&gt;
So in case of a large speed variation in a revolution, the analyzer can always deliver valuable spectrums. During implementation the operator can adjust the speed variation threshold over which measurements are automatically rejected.&lt;br /&gt;
&lt;br /&gt;
====Signal resampling====&lt;br /&gt;
&lt;br /&gt;
The digital resampling of analyzed signals needs a complementary antialiasing filter whose cut off is continuously adjusted to a frequency equal to the product of the maximum analyzed order by instantaneous shaft speed.&lt;br /&gt;
&lt;br /&gt;
The resampling also needs X signal interpolation between samples. The variable filtering and interpolation is based on an OROS proprietary wich is the most accurate and powerful on the market.&lt;br /&gt;
&lt;br /&gt;
Compared to other methods, the OROS one has the main advantage to be able to work with the full available frequency range of the original sampled signal, so the OROS order tracking analyzer is able to work with signals up to 40 kHz with initial sampling at 102.4 kHz.&lt;br /&gt;
&lt;br /&gt;
====Signal analysis====&lt;br /&gt;
&lt;br /&gt;
The signal analyzer does FFT processing on resampled signal.&lt;br /&gt;
&lt;br /&gt;
This signal is always taken by starting synchronously on a tach revolution pulse in order to be able to deliver absolute phase information of each order.&lt;br /&gt;
&lt;br /&gt;
Sub-ranging order analysis is available with order resolution down to 1/32. In this case the FFT processing is done by using signal corresponding to N consecutive shaft revolutions and so gives a 1/N order resolution.&lt;br /&gt;
&lt;br /&gt;
The angular and spectral averaging are implemented. Angular averaging is necessary when absolute phase resolution and/or rejection of signals unrelated to shaft rotation are needed.&lt;br /&gt;
&lt;br /&gt;
Spectral averaging can compute power spectrums and cross power spectrums with associated results. In this mode, weighting windows are available in order to reduce side lobe effects of signals not related to shaft rotation.&lt;br /&gt;
&lt;br /&gt;
== NVGate SOA Plug in==&lt;br /&gt;
This plug-in is used to perform synchronous order tracking (it is also used to compute time signals in post analysis mode with the Player module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_18.png|700px|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set an accurate range peak is advice for more accurate results.&lt;br /&gt;
===Connect track and display===&lt;br /&gt;
We advise using [[NVGate_Software_overview#GoToResult|GoToResult]] result Wizard for connecting track and display SOA results.&lt;br /&gt;
[[File:Go_to.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
===Available results:===&lt;br /&gt;
&lt;br /&gt;
With Resolution being the value of the ''Synch. order x/Order FFT /Resolution ''setting:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background:white&amp;quot; border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''Type'''&lt;br /&gt;
|'''Size'''&lt;br /&gt;
|'''Dimension'''&lt;br /&gt;
|'''Domain'''&lt;br /&gt;
|'''Save'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Filtered signal&lt;br /&gt;
|256 pt&lt;br /&gt;
|2D &lt;br /&gt;
|time&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Triggered block&lt;br /&gt;
|(Resolution-1)*2.56&lt;br /&gt;
|2D &lt;br /&gt;
|angle(rev)&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Trigger Shaftview&lt;br /&gt;
|(Resolution-1)*2,56&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|DC&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|RMS&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Min level&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Max level&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Peak&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Peak-Peak&lt;br /&gt;
|1pt&lt;br /&gt;
|1D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Crest Factor&lt;br /&gt;
|1pt&lt;br /&gt;
|2D&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Avg. block&lt;br /&gt;
|(Resolution-1)*2.56&lt;br /&gt;
|2D &lt;br /&gt;
|angle(rev)&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Avg. Trigger Shaftview&lt;br /&gt;
|(Resolution-1)*2,56&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Weighted block&lt;br /&gt;
|(Resolution-1)*2.56&lt;br /&gt;
|2D &lt;br /&gt;
|angle(rev)&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order spectrum&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order inst. spectrum&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order avg. spectrum&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order &amp;amp; Overall&lt;br /&gt;
|1 pt&lt;br /&gt;
|1D &lt;br /&gt;
|&amp;amp;nbsp; &lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Inst. Order cross-spectrum&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Avg. order cross-spectrum&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|ORF H1&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|ORF H2&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order Coherence&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D &lt;br /&gt;
|order&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Order profile&lt;br /&gt;
|2048 pt max&lt;br /&gt;
|2D &lt;br /&gt;
|time&lt;br /&gt;
|Display only&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Cepstrum*&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D&amp;lt;br&amp;gt;&lt;br /&gt;
|Roder&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|InstCepstrum*&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D&lt;br /&gt;
|Roder&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|AvgCepstrum*&lt;br /&gt;
|Resolution&lt;br /&gt;
|2D&lt;br /&gt;
|Roder&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Correlation*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|instCorrelation*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|AvgCorrelation*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|CrossCorrelaion*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|InstCrossCorrelaion*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|AvgCrossCorrelaion*&lt;br /&gt;
|1/((Resolution-1)*2.56)&lt;br /&gt;
|2D&lt;br /&gt;
|angle(rev)&lt;br /&gt;
|Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Synthesized Orbit&lt;br /&gt;
|(Resolution-1)*2,56&lt;br /&gt;
|2D &lt;br /&gt;
|angle(rev)&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Raw Orbit&lt;br /&gt;
|Nb Pulse/rev&lt;br /&gt;
|2D &lt;br /&gt;
|angle(rev)&lt;br /&gt;
| Yes&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Filtered signal''': This result is available if a filter is selected in the ''Synch. order x/Channel x/Input filter'' setting. It displays the input time signal after filtering it.&lt;br /&gt;
* '''Triggered block''': This displays the signal after being triggered by the event selected with the ''Synch. order x/Trigger/Trigger ''setting'' .''&lt;br /&gt;
* '''Avg. block''': This result is available if the value of the ''Synch. order x/Average/Domain ''setting is Time. It displays the time signal block average.&lt;br /&gt;
* '''Weighted block''': This result displays the signal after being weighted by the weighting window selected with the ''Synch. order x/Channel x/Weighting window'' setting.&lt;br /&gt;
* '''Ord spectrum''': This result is available if the value of the ''Synch. order x/Average/Domain ''setting is Time. It displays the result of the Synchronous order processing results after angular averaging.&lt;br /&gt;
* '''Ord inst. spectrum''': This result is available if the value of the ''Synch. order x/Average/Domain ''setting is Spectral. It displays the Synchronous order processing results.&lt;br /&gt;
* '''Ord avg. spectrum''': This result is available if the value of the ''Synch. order x/Average/Domain ''setting is Spectral. It displays the average order instant spectrum results.&lt;br /&gt;
* '''Order &amp;amp; Overall''': It displays computation of the orders chosen with the ''Synch. order x/Channel x/Tracked order'' setting and the Overall level if the ''Synch. order x/Overall Analysis/Band power tracking ''is set to On.&lt;br /&gt;
*  '''Inst. Order cross-spectrum''': This result is not available if there is no cell checked in the ''Synch. Order x /Order FFT/Cross spectrum ''matrix. It displays the instant cross spectrum between the 2 selected channels.&lt;br /&gt;
* '''Avg. cross-spectrum''': This result is not available if there is no cell checked in the ''Synch. orderx /Order FFT/Cross spectrum ''matrix. It displays the averaged cross spectrum average results.&lt;br /&gt;
* '''ORF H1''': This result is not available if there is no cell checked in the matrix of the ''Synch. Order x /Order FFT/Cross spectrum ''matrix. It displays the Order Response Response Function H1, see Appendix for details.&lt;br /&gt;
* '''ORF H2''': This result is not available if there is no cell checked in the matrix of the ''Synch. Order x /Order FFT/Cross spectrum ''matrix. It displays the Order Response Function H2, see Appendix for details.&lt;br /&gt;
* '''Order Coherence''': This result is not available if there is no cell checked in the ''Synch. Order x /Order FFT/Cross spectrum ''matrix. It displays the  ORF H1/H2 ratio.&lt;br /&gt;
* '''Order profile''': It displays changes in the Order &amp;amp; Overall result.&lt;br /&gt;
* '''Order AutoCorrelation''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x x/Average/Domain ''setting value is Time.&lt;br /&gt;
* '''Order CrossCorrelation''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x x/Average/Domain ''setting value is Time. This result is not available if there is no cell checked in the ''Synch. orderx /Order FFT/Cross spectrum ''matrix&lt;br /&gt;
* '''Inst. Order AutoCorr''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x /Average/Domain is ''Spectral or Frequency synchronous.&lt;br /&gt;
* '''Avg. Order AutoCorr''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x /Average/Domain is ''Spectral or Frequency synchronous.&lt;br /&gt;
* '''Inst. Order CrossCorr''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x x/Average/Domain is ''Spectral or Frequency synchronous. This result is not available if there is no cell checked in the ''Synch. Order x /Order FFT/Cross spectrum ''matrix&lt;br /&gt;
* '''Avg. Order CrossCorr''': This result is available if correlation is selected in ''the Synch. Order x/Correlation ''and ''Synch. Order x x/Average/Domain is ''Spectral or Frequency synchronous. This result is not available if there is no cell checked in the ''Synch. Order x /Order FFT/Cross spectrum ''matrix&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
[[Image:Reports_Tools_Ribbons_396.png|framed|right]]&lt;br /&gt;
[[File:order_ASB.png|framed]]&lt;br /&gt;
Note: Up to 2 SOA plug-in can be present in the software configuration, each of them running independent analyses on the same or different channels.&lt;br /&gt;
&lt;br /&gt;
====Channel====&lt;br /&gt;
Contains the settings related to the source input.&lt;br /&gt;
&lt;br /&gt;
* '''Source''': Input source to be analyzed. It may come from the Front-end input or from the Player in post analysis mode (see the post analysis chapter). In post analysis mode, only the tracks with the same signal bandwidth can be plugged.&lt;br /&gt;
* '''Input filter''': filter to be used for filtering the source before the analysis. The Filters that are not compatible with the upper frequency of the plug-in cannot be selected (see the Filter builder chapter). The A and C weighting on time domain are available in the NVGate&amp;lt;sup&amp;gt;®&amp;lt;/sup&amp;gt; filter list.&lt;br /&gt;
* '''Phase shift.''' This setting is independent for each channel and can be change in the range of &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;/- 720° in order to cover up the cycle duration of 4 stroke engines in both directions (forward/backward).&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_20.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
* '''Tracked order''': Orders to be tracked by the Synchronous Order Tracking. You can select up to eight different orders per channel, and there are 2 settings for each order:&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_21.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
* '''State''': ON if you want the order to be computed&lt;br /&gt;
* '''Order number''': Select the number of the order you want to track, from 0.001 up to 800&lt;br /&gt;
* '''Weighting window''': window used to weight the signal before processing. There are 6 fixed windows: Uniform, Hanning, Hamming, Kaiser Bessel, and Flat top; 3 customized windows: Force, Response (see the Time Windows chapter) For the window characteristics, see the Appendix.&lt;br /&gt;
====Tach====&lt;br /&gt;
Contains the Synchronous order analysis tachometer settings.&lt;br /&gt;
&lt;br /&gt;
* '''Associated tach'''[[Image:Reports_Tools_Ribbons_400.png]]: The selected tachometer enables the plug-in to perform Synchronous Order Tracking.&lt;br /&gt;
* '''Phase reference''': selects the original phase when computing the absolute spectrum phase.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background:white&amp;quot; border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;92%&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''Phase reference'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Pulse Edge&lt;br /&gt;
|The original phase is referenced from the tach edge detection, i.e. the position of the unbalance. It gives the absolute phase.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Pulse Center&lt;br /&gt;
|The spectrum phase is corrected with the phase of the first order of the tach signal (the correction is applied to all the spectrum lines proportionally to the number of lines). This corresponds to the center of the tach pulse. This setting can be used only if the tach signal is analyzed (the source of the tach must be a source of the analyzer). It gives a relative phase.&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example if the analyzed signal is a pure sine and if this signal is also applied to the tach input (with a threshold of 0 Volt and a positive slope), the measured spectrum phase at the sine frequency is:&lt;br /&gt;
&lt;br /&gt;
'''Pulse Edge:''' -90 °&lt;br /&gt;
&lt;br /&gt;
'''Pulse Center:''' 0 ° (whatever the threshold level of the tach is)&lt;br /&gt;
&lt;br /&gt;
* '''Accepted speed variation''': Percentage of variation of the tach speed accepted during one revolution. The default value is 100%. It means that this parameter is not taken account.&lt;br /&gt;
*  '''Sampling pulse''': Select an Ext. Synch input declared as &amp;quot;Sampling&amp;quot;. When this setting differ from &amp;quot;none&amp;quot;, the angular sampling of the SOA plug-in is based on the actual sampling pulse phase.&lt;br /&gt;
The angular sampling allows getting the exact angle (or phase) of the events in the machine cycle. The results are event better using the time domain averaging (i.e. angular). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[NVGate_Torsional#Angular_sampling_for_SOA_analysis|Please read the sampling page for more info.]]&lt;br /&gt;
&lt;br /&gt;
====Trigger====&lt;br /&gt;
Contains the settings related to triggering events and how to start, and stop signal computation. Note that the trigger is always done on the next available revolution pulse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Order_analysis_24.png|framed|none]]&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Start''': defines the event to start the analysis. The user can choose any event among the list of defined events. By default only the Free run and Manual events are available. The user can define another event in the &amp;quot;Event Definition&amp;quot; shared resources and then use this event for the &amp;quot;Start&amp;quot; condition.&lt;br /&gt;
* '''Stop''': defines the event to stop the analysis. The user can choose any event among the list of defined events. By default only the Free run and Manual events are available. The user can define another event in the &amp;quot;Event Definition&amp;quot; shared resources and then use this event for the &amp;quot;Stop&amp;quot; condition.&lt;br /&gt;
* '''Trigger''': defines an event to compute the Order Spectrum on one block of time signal. After the computation, the plug-in waits for a new event to compute another block.&lt;br /&gt;
'''Warning''': SOA will not start without any tachometer, the SOA will stay in the status &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;triggering&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* '''Repeat''': This setting allows selecting a condition for the plug-in to be restarted. If an event is selected as a Start event, the option New start is available, and when this mode is selected each Start event restarts the plug-in. The mode End of averaging is available when the value of the ''Sync Order x/Average/Type ''setting is different from the Exponential mode, it restarts the plug-in when the averaging is finished. It is set to &amp;quot;Off&amp;quot; except for linear average when it is set to &amp;quot;End of averaging&amp;quot;. In this case, the &amp;quot;Avg duration&amp;quot; gives the periodicity of the average restart.&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_25.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
- Mode Repeat on &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;end of averaging&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Order_analysis_26.png|framed|none]]&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Run&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; corresponds to the start of the analyzer. The start is the beginning of average duration. At the end of the first average, the second average will start and so on till the end of the integration time (even if the last short time integration duration is not over). Each averaging has the same size, except the last that can be smaller.&lt;br /&gt;
&lt;br /&gt;
- Mode Repeat on &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;New start&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_27.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Run&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; trigger the analyzer, but the average begins at the start event (set in the event definition). This averaging stops at the end of average duration or at the stop event. Then the next averaging is waiting for the new start event to occur.&lt;br /&gt;
&lt;br /&gt;
In case a new event occurs during a previous averaging, this start event won&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;t be effective because the previous average duration is not over, you can only set other event after the end of the previous one.&lt;br /&gt;
&lt;br /&gt;
* Trigger delay: defines a trigger delay in revolution&lt;br /&gt;
* Pulse/rev.: defines the number of pulses per revolution of the signal used as trigger source. This setting is available if:&lt;br /&gt;
* The SOA is set on spectral averaging&lt;br /&gt;
* The &amp;quot;Trigger&amp;quot; event is a &amp;quot;edge detection&amp;quot; event (on analogical or ExtSync channel)&lt;br /&gt;
If the setting value is higher than 1, the &amp;quot;Overlap&amp;quot; and the &amp;quot;Overlap in rev&amp;quot; are forced to their maximum and are not modifiable. The overlap between 2 spectra is equal to ((pulse_per_rev-1)/pulse_per_rev) rotations i.e. a delay of 1/pulse_per_rev revolution between 2 spectra. This setting is provided for information only. It is modifiable in the trigger source settings.&lt;br /&gt;
&lt;br /&gt;
* '''Accept mode''': selects the method of rejecting signal blocks.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background:white&amp;quot; border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;93%&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''Mode'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Normal&lt;br /&gt;
|All blocks are accepted&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Overload rejection&lt;br /&gt;
|Blocks with an overload are automatically rejected&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Average====&lt;br /&gt;
Contains the settings related to the type of averaging of the signals to be computed.&lt;br /&gt;
&lt;br /&gt;
* '''Domain'''[[Image:Reports_Tools_Ribbons_400.png]]: You can chose between Spectral and Angular: the spectral domain averaging computes the average after Order spectrum processing, while angular averaging the average before Order spectrum processing.&lt;br /&gt;
* '''Size''': The number of signal blocks used to compute the average, from 1 up to 1000000000.&lt;br /&gt;
* '''Type''': The method of averaging the signal. There are four different averaging modes: Linear, Exponential, Peak hold, and Referenced Peak hold.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background:white&amp;quot; border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''Type'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Linear&lt;br /&gt;
|Linear averaging of results is carried out on the value of the Size setting from the same sub-module. The plug-in automatically stops when the given number of averages is reached.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Exponential&lt;br /&gt;
|In this mode of computation, each new average is obtained by adding its previous value the new Order spectrum result divided by the value of the Size setting, and subtracting its previous value divided by the value of the Size setting too.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Peak hold&lt;br /&gt;
|This method processes the peaks found in their spectrum power density for each channel, and for a number of Order spectrum analysis determined by the size setting. The plug-in automatically stops when a given number of averages is reached. For each order line, each time the value of the instantaneous spectrum is greater than the value of the average order spectrum, the average order spectrum value is equal to the instantaneous order spectrum value. Otherwise, the average order spectrum value is not modified.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Ref Peak hold&lt;br /&gt;
|&lt;br /&gt;
[[Image:Order_analysis_28_436.png|framed|none]]&lt;br /&gt;
&amp;lt;br&amp;gt;This method processes the peaks found in their spectrum power density for each channel, and for a number of FFT analyses determined by the size setting. The FFT plug-in automatically stops when a given number of averages is reached. When this mode is selected, a new setting called Reference channel appears in the same sub-module; if None is selected, the average processing is the same as the Peak hold mode. If a channel is selected, then there are two different behaviors depending on the channel:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;For the reference channel: For each frequency line, each time the value of the instantaneous spectrum is greater than the value of the average spectrum, the average spectrum value is equal to the instantaneous spectrum value. Otherwise, the average reference spectrum value is not modified.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;For the other channels: For each frequency line, for each modification of the average reference spectrum, the average channel spectrum is equal to the instantaneous channel spectrum values, even if it is less than the average spectrum value. The modification of the reference and the other channels is synchronized.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;In this example, the modified spectrum lines are between '''A''' and '''B''' for both reference channel and response channel. The spectrum lines between '''B''' and '''D''' in the response channel are not updated. The modification of the reference and response channels is synchronized&amp;lt;br&amp;gt;Each time the peak value of the reference channel has been modified, the '''averaged cross spectrum''' is equal to the instantaneous reference spectrum by the response spectrum product. In this example, the modified spectrum lines are between '''A''' and '''B'''. The functions as transfer function (where the reference channel is taken into account) will be modified between '''A''' and '''B'''.&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Hidden/fixed: Peak hold and Referenced Peak hold are only available if the Domain setting from the same sub-module is set to Spectral.''&lt;br /&gt;
&lt;br /&gt;
* '''Reference channel''': channel to be used as a reference in Referenced Peak hold averaging mode. You can choose between the channels that are plugged into the plug-in. If None is selected, the average processing is the same as the Peak hold mode.&lt;br /&gt;
''Hidden/fixed: This setting is only available when the Referenced Peak hold averaging mode is selected.''&lt;br /&gt;
&lt;br /&gt;
====Order FFT====&lt;br /&gt;
Transforms the order blocks into order spectra.&lt;br /&gt;
&lt;br /&gt;
[[File:512.jpg]]&lt;br /&gt;
&lt;br /&gt;
* '''Max speed''': defines the highest angular speed accepted. All revolutions with a speed higher than Max speed are rejected by the analysis.&lt;br /&gt;
The Max speed value is given by:&lt;br /&gt;
&lt;br /&gt;
Max speed (RPM) = Frequency Range (Hz) / Max Order * 60&lt;br /&gt;
&lt;br /&gt;
If a tach is connected to this plug-in, the max speed value is forced to the value defined in tachometer properties.&lt;br /&gt;
&lt;br /&gt;
''To know more, see  § 1.4.2.1 tachometer /tachs.''&lt;br /&gt;
&lt;br /&gt;
The SOA Upper frequency is limited by the High sampling of the front-end or by the Max bandwidth of the Player in post-analysis.&lt;br /&gt;
&lt;br /&gt;
* '''Min speed''': defines the lowest measured angular speed accepted. All revolutions with a speed lower than Min speed are rejected by the analysis.&lt;br /&gt;
The RPM velocity dynamic is defined by:&lt;br /&gt;
&lt;br /&gt;
Max Speed / Min Speed = 512&lt;br /&gt;
&lt;br /&gt;
* '''Max order'''[[Image:Reports_Tools_Ribbons_398.png]]: defines the highest order that can be computed. Range from 6,25 to 800. &lt;br /&gt;
*'''Order resolution'''[[Image:Reports_Tools_Ribbons_400.png]]:: Defines the resolution of the Order spectra. Resolution = Max order /  Number of lines&lt;br /&gt;
Available resolutions are: 1, ½, ¼, 1/8, 1/16 and 1/32 of order&lt;br /&gt;
*'''Overlap''': defines the amount of overlap of blocks of signal between 2 successive Order FFT computations expressed in revolutions, from 0 to 1/Order resolution For example: if ''Order resolution'' setting is 1/8, then Overlap range is from 0 to 7.&lt;br /&gt;
&lt;br /&gt;
* '''Angular Overlap''': defines the overlap (in angle) corresponding to a rotation fraction. This setting is comprised between 0 and 1 rotation-SOA angular resolution with one rotation equal to 2*PI or 360° depending on the physical quantity used for the angle. The resolution (in radian) is equal to 2*PI/number of samples per rotation (=(number of lines -1)*2.56*order resolution). This setting is only available for a spectral averaging mode (in time domain it is forced to 0 and it is not modifiable). To have the maximal overlap when the resolution is &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt;1, the &amp;quot;Overlap&amp;quot; and the &amp;quot;Overlap in rev&amp;quot; must be at their maximum.&lt;br /&gt;
* '''Upper frequency''': The Upper frequency that can be processed by the plug-in. It depends on two settings: ''Max speed'' setting and ''Max order'' setting. If Max speed is in RPM you have the formula: Upper Frequency = MaxOrder * (MaxSpeed/60). For example Max speed = 770 RPM, Max Order = 100 then Upper Frequency = 100* (770/60) = 1283.333 Hz&lt;br /&gt;
''Hidden/fixed: fixed''&lt;br /&gt;
&lt;br /&gt;
* '''Resolution''': The number of lines computed by the Order FFT: this depends on two settings: ''Max order'' setting and ''Order resolution'' setting. Resolution = (MaxOrder / OrderResolution) &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt; 1. For example: if Max order = 50 and Order resolution = 1/8, then Resolution = 50 * 8 &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt; 1= 401 lines.&lt;br /&gt;
''Hidden/fixed: fixed''&lt;br /&gt;
&lt;br /&gt;
* '''Phase Ref''': The phase reference for the computation of the Order FFT&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background:white&amp;quot; border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;59%&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|'''Phase reference'''&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Cosine&lt;br /&gt;
|Default value&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Sine&lt;br /&gt;
|Leads to a &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;90° phase Offset&lt;br /&gt;
&lt;br /&gt;
|}&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Reverse cross function:''' this setting allows calculating the cross function of the greyed part of the Cross spectrum setting. Default value is True except on cascaded mode (multiple hardware) as the number of reference spectrum to be carried between the analyzers may lead to a dramatic loss of performances.&lt;br /&gt;
* '''Cross spectrum''': Matrix used for the selection of the computed cross spectra. Only the upper half of the matrix can be used; when a box is checked, two cross spectra are computed with each of both channels being the reference. Selecting the cross spectra is necessary to have access to some results: instant order cross spectrum, order average cross spectrum, ORF H1, ORF H2 and Order coherence.&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_29.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_30.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
* '''Orders Phase ref''': This function allows you to use the cross-spectrum phase value for the phase of the order (relative phase). The cross-spectrum phase is the relative phase between the input signal of the current channel and the reference input signal associated to this channel. Whatever the average mode, the average cross-spectrum is always used to calculate the orders phase.&lt;br /&gt;
'''- No activated''':  The phase of the order is the spectrum phase of the frequency corresponding to the order value (absolute phase).&lt;br /&gt;
&lt;br /&gt;
To know more, see ''§1.5.2.2 Ext Syncs/Tach/Phase Ref  p1-115.''&lt;br /&gt;
&lt;br /&gt;
- '''Activated''':  choose the channel used to calculate the orders phase.&lt;br /&gt;
&lt;br /&gt;
If a channel is selected, &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Phase Ref&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; in ''SOA/Tach'' is not activated.&lt;br /&gt;
&lt;br /&gt;
Note: This set up doesn&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;t change the spectrum phases and consequently doesn&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;t change the orders phases extracted from a waterfall of spectra.&lt;br /&gt;
&lt;br /&gt;
* '''Range''': Frequency range of the plug-in, set automatically in order to process the ''Sync Order x/Order FFT/Upper frequency'' value. For optimum performance, the ''Front End/Input sampling'' setting value should be close to the value of the Range setting multiplied by 2.56. For example: for a Range value of 20kHz, the input sampling should be 20000*2.56 = 51.2kS/s.&lt;br /&gt;
''Hidden/fixed: fixed''&lt;br /&gt;
&lt;br /&gt;
====Overall analysis====&lt;br /&gt;
Calculation of the order bands sum.&lt;br /&gt;
&lt;br /&gt;
* '''Band ''''''power tracking'''&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;: &amp;lt;/font&amp;gt;Switches computation of the overall level result &amp;quot;on or off&amp;quot;.&lt;br /&gt;
* '''Lower Order''': Specifies the lower order of the overall computation order range&lt;br /&gt;
* '''Upper Order''': Specifies the upper order of the overall computation order range&lt;br /&gt;
====Correlation====&lt;br /&gt;
Calculation of the Auto Correlation and the Cross Correlation in the angle domain.&lt;br /&gt;
[[File:Correlation2.png|left]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Correlation: '''Allows to activate or not the calculation of the correlation.&lt;br /&gt;
All results of the correlation are in the angle domain with –T/2 et T/2 where T equal to the duration of the trigger block of the FFT.&lt;br /&gt;
&lt;br /&gt;
* '''Weighting  window: '''Choose between following values of this setting:&lt;br /&gt;
Three types of correlation window are available:&lt;br /&gt;
&lt;br /&gt;
'''Uniform '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;-T/2, T/2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; (where T is the trigger block length): All the window coefficients are equal to 1. For best results with the Uniform weight window, you should use signal sources that are self-windowing, such as transients, burst, and periodic waveforms (signal period must be a multiple of the weight window length). In order to have the trigger point (T0) at the center of the time trigger block, the trigger Delay must be set to –T/2'''.'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_37.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
'''Centered Zero Padding '''&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;-T/4, T/4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; (where T is the trigger block length): Only the central part of the window (representing the half-length) is not null. This weight window must be used with random noise. In order to have the trigger point (T0) at the center of the time trigger block, '''the trigger Delay must be set to –T/4 '''(where T is the trigger block length)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF00FF&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Order_analysis_38.png|none]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Left Zero Padding''' &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;0, T/2&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; (where T is the trigger block length): Only the first half of the window is not null. This weight window must be used with random noise. In order to have the trigger point (T0) at the beginning of the time trigger block, '''the trigger Delay must be set to 0.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Order_analysis_39.png|framed|none]]&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the correlation is activated then all results of the SAO will be affected by the weighting windows of the correlation. When the Correlation setting is deactivated the weighting windows by default (Hanning) is applied on all SOA plug-in. inputs&lt;br /&gt;
&lt;br /&gt;
Notes: Results from the correlation are normalized.&lt;br /&gt;
&lt;br /&gt;
'''Considerations to obtain good results when making correlation measurement.'''&lt;br /&gt;
&lt;br /&gt;
* Use input '''AC '''coupling. Both auto correlation and cross correlation are disturbed by DC offset in the input signal.&lt;br /&gt;
* Use appropriate trigger mode and trigger delay. The trigger mode should be different from free run. The trigger Delay must be set to –T/2 (where T is the time signal block length) with the Uniform and Centered Zero Padding correlation weighted window (and 0 for the Left Zero Padding window). But in some cases, especially with the Centered Zero Padding and Left Zero Padding window (as these function types attenuate parts of the trigger signal block), the trigger Delay must be adjusted to position the input signal with respect to time.&lt;br /&gt;
&lt;br /&gt;
===SOA Status===&lt;br /&gt;
All statuses are available to add to the control panel&lt;br /&gt;
&lt;br /&gt;
====Sync. Order x====&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_40.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
The current plug-in status is synthesized in a special progress-bar. This progress bar is automatically displayed in the &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;control panel&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; when the plug-in is active (i.e. as soon as at least 1 input is connected to the Sync Order plug-in). This status is called &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Sync. Order x&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; (x is 1 or 2) and it is available in the status ASB tree (see customize control panel).&lt;br /&gt;
&lt;br /&gt;
This setting displays the averaging count (i.e. a current analyzed block number), the plug-in state and the real-time status.&lt;br /&gt;
&lt;br /&gt;
* '''State''': block number analyzed&lt;br /&gt;
* '''Run:''' The SOA plug-in is computing order spectra and averaging it.&lt;br /&gt;
* '''Stop:''' The SOA plug-in is stopped.&lt;br /&gt;
* '''Trig:''' The SOA plug-in is waiting for next block; i.e. next trigger event (block triggering) or first start event (triggering)&lt;br /&gt;
* '''Pause: '''The SOA plug-in averaging is paused&lt;br /&gt;
* '''Waiting:''' The SOA plug-in averaging is waiting for the acquisition to be accepted or rejected (in structural mode).&lt;br /&gt;
&lt;br /&gt;
'''Notes''': in exponential averaging mode the average count stops increasing as soon as the set value is reached.&lt;br /&gt;
&lt;br /&gt;
The way the status bar is displayed, depends on the type of averaging selected:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Linear&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;''', '''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Peak hold&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; '''or '''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Ref peak hold&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;: '''the progress bar is filled from left to right.&lt;br /&gt;
* '''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Exponential&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;''': the progress bar is filled from right to left with a flashing until the end of the acquisition.&lt;br /&gt;
The color of the background bar and of the text depends on real-time status:&lt;br /&gt;
&lt;br /&gt;
* ''Green background and white or black text'': acquisition in real-time.&lt;br /&gt;
* ''Red background and white or black text'': the current acquisition is not real-time (current block is not analyzed).&lt;br /&gt;
* ''Green background and red text'': the current acquisition is real-time, but since start not all the blocks were analyzed.&lt;br /&gt;
&lt;br /&gt;
====SOAx cur.blk====&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_41.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
'''SOA cur. blk''' is a status that shows if the measurement has been triggered (for long time acquisition) and the progression in the block.&lt;br /&gt;
&lt;br /&gt;
* Triggering:&lt;br /&gt;
* Acquiring: displays the evolution of the acquisition in percentage. During the acquiring period, no result is displayed; the result will be display at the end of the acquisition.&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Order_analysis_42.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Paused: the acquisition is paused&lt;br /&gt;
* Stop: the acquisition is stopped&lt;br /&gt;
&lt;br /&gt;
====Trigger State====&lt;br /&gt;
The following scheme describes the different states of the measurement:&lt;br /&gt;
&lt;br /&gt;
[[Image:Order_analysis_43.png|framed|none]]&lt;br /&gt;
&lt;br /&gt;
The default trigger state is on &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Stop&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; and waiting for a &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Run&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; (start or trigger). Then the state become &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Triggering&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; and is waiting for a start event, the states become &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Block Triggering&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; and is now waiting for a trigger event for being in the &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Running state. If after one second there is no trigger event, the state comes back to &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Block Triggering&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The state is &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;Stop&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; after a stop event or at the end of averaging.&lt;br /&gt;
&lt;br /&gt;
'''Note''': all start event, trigger, new revolution or run are ignored in &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;free run&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt; mode&lt;br /&gt;
&lt;br /&gt;
====Count====&lt;br /&gt;
This status displays the averaging count processed. This status is expressed in analyzed block.&lt;br /&gt;
&lt;br /&gt;
====Real-time====&lt;br /&gt;
This status displays if the averaging is in real-time or not (i.e. the current block is analyzed or not). If the corresponding signal were not available at this time, the acquisition is not real-time. That means that the treatment is longer than the acquisition. There are three values for this state:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;'''OK'''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;: The acquisition is real-time (all block have been processed and averaged)&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;'''No'''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;: Acquisition was not real-time (some previous blocks are missing in the average).&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;'''-'''&amp;lt;nowiki&amp;gt;’&amp;lt;/nowiki&amp;gt;: The acquisition is currently not real-time (current block is not analyzed an averaged).&lt;br /&gt;
&lt;br /&gt;
====Block overload====&lt;br /&gt;
This status corresponds to the instantaneous overload indication within 1 SOA trigger block, for instance amplitude overload occurred in the current analyzed block. Note that overloaded block may be automatically rejected (see accept mode).&lt;br /&gt;
&lt;br /&gt;
====Analysis overload====&lt;br /&gt;
This status corresponds to overload indication over the measurement period. It means that during the whole measurement period there was (or not) an overload. It memorizes block overloaded.&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:512.jpg&amp;diff=12864</id>
		<title>File:512.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:512.jpg&amp;diff=12864"/>
		<updated>2026-04-21T15:08:46Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=Hardware_Specification_OR34&amp;diff=12860</id>
		<title>Hardware Specification OR34</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=Hardware_Specification_OR34&amp;diff=12860"/>
		<updated>2026-04-20T13:38:27Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[category:WikiOros]]&lt;br /&gt;
==General description==&lt;br /&gt;
The following specifications concern the OR34 analyzer. OR34 consists of a 3-Series hardware containing optional inputs and processing modules, a PC with an Ethernet interface and NVGate&amp;lt;sup&amp;gt;®&amp;lt;/sup&amp;gt; software with optional plug-in analyzers.&lt;br /&gt;
&lt;br /&gt;
===Modules===&lt;br /&gt;
The following tables detail the complete performances of OR34 hardware. Optional or standard modules may fill the described slots.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot;|'''Front-end'''&lt;br /&gt;
|Dynamic analog inputs &lt;br /&gt;
|2 slots of 2 inputs (BNC)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Dynamic analog outputs&lt;br /&gt;
|1 output (BNC)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Externals sync&lt;br /&gt;
|2 trigger/tachometer inputs (BNC)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot;|'''Processors '''&lt;br /&gt;
|Trigger / tachometer / monitoring&lt;br /&gt;
|1 DSP&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|PC communication / recording&lt;br /&gt;
|1 DSP&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Computation power&lt;br /&gt;
|1 DSP&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Miscellaneous'''&lt;br /&gt;
|Remote control&lt;br /&gt;
|1 with RS232 cable connection (RJ11)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Case==&lt;br /&gt;
===Mechanicals===&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Weight&lt;br /&gt;
|colspan = &amp;quot;2&amp;quot;|'''1.4 kg''' (3 lb)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
Dimensions&lt;br /&gt;
|Case (w.h.d) &lt;br /&gt;
|'''45 mm x 205 mm x 154 mm '''( 1.8 in x 8.1 in x 8.8 in )&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Overall (w.h.d)&lt;br /&gt;
|'''54 mm x 215 mm x 163 mm '''( 2.1 in x 8.4 in. x 6.4 in ) &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Power supply===&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Power&lt;br /&gt;
|colspan = &amp;quot;2&amp;quot;|'''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 15 VA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
External AC Power supply&lt;br /&gt;
|Voltage &lt;br /&gt;
|'''100 to 240 VAC'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Frequency&lt;br /&gt;
|'''47 to 63 Hz'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|'''DC'''&lt;br /&gt;
|Range &lt;br /&gt;
|&lt;br /&gt;
0 V to 28 V&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Overload protection&lt;br /&gt;
|'''31 V''' (over this voltage DC poles are short-circuited)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|'''UPS (Uninterrupt-ible Power Supply)'''&lt;br /&gt;
|Type &lt;br /&gt;
|'''Internal NiMh battery '''(No memory effect)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|Protection against power supply loss or failure&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|'''15 min.'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Environmental / Compliance with standards==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''CE\CB\FCC'''&amp;lt;/font&amp;gt;&lt;br /&gt;
| colspan = &amp;quot;2&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Indicates compliance with EMC Directive '''89/336/EEC''', '''2014/30/EU''' and Low Voltage Directive '''73/23/EEC''','''2014/35/EU'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''Safety'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;| &amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''IEC 61010-1'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;| &amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Safety requirements for electrical equipment for measurement, control and laboratory use.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''IEC 61010-2-30'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Particular requirements for testing and measuring circuits.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''Over-voltage Cat.'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''II '''(Local level mains, appliance, and portable equipment)&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;5&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''EMC Emission'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''IEC 61000-6-3'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Emission standard for residential, commercial and light-industrial environments.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''IEC 61000-6-4'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Emission standard for industrial environments.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''IEC 61326-1'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Electrical equipment for measurement control and laboratory use EMC requirements.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''CISPR 11 '''&amp;lt;/font&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Radio disturbance characteristics of industrial and scientific equipment.: Class B limit. &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''FCC Rules'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Complies with the limits for a Class B digital device.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''EMC Immunity'''&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''IEC 61000-6-1'''  &amp;lt;/font&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Immunity standard for residential, commercial and light-industrial environments.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''IEC 61000-6-2'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Immunity standard for industrial environments&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''IEC 61326-1'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Electrical equipment for measurement control and laboratory use EMC requirements.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''EN 50082-2'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Generic immunity standard: Industrial environment.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''EMF'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''Recommendations 199/519/CE EN 62311'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;Evaluation of person exposure to electromagnetic fields &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''Materials'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''ROHS'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''2011/65/EU and 2015/863'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''WEEE'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;lt;font size = &amp;quot;1&amp;quot;&amp;gt;'''2012/19/EU'''&amp;lt;/font&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''Temperature'''&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|Operating &lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|'''0°C to 50°C''' (32°F to 122°F)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|Storage&lt;br /&gt;
|'''-20°C to 65°C''' (-4°F to 149°F)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|Absolute maximum rating&amp;lt;sup&amp;gt;ii&amp;lt;/sup&amp;gt;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|'''-35°C to 70°C''' (-31°F to 158°F)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Humidity'''&lt;br /&gt;
|Max&lt;br /&gt;
|'''93 % '''RH at '''40°C''' non-condensing&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|'''Shock'''&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot; colspan = &amp;quot;2&amp;quot;|Complies with '''IEC 68-2-27'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Operating&lt;br /&gt;
|'''100 m/s² '''(11 ms, ½ sine) and 700 '''m/s²''' (3 ms, ½ sine)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|Storage&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|'''200 m/s² ('''11 ms, ½ sine) and '''1 000 m/s²''' (3 ms, ½ sine)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Absolute maximum rating&amp;lt;sup&amp;gt;ii&amp;lt;/sup&amp;gt;&lt;br /&gt;
|'''1 000 m/s²''' (3 ms, ½ sine)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|'''Vibration'''&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot; colspan = &amp;quot;2&amp;quot;|Complies with '''IEC 68-2-6'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Operating&lt;br /&gt;
|'''20 m/s², 5-500 Hz, 5mm'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|Storage&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|'''25 m/s², 5-500 Hz, 5mm'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Absolute maximum rating&amp;lt;sup&amp;gt;ii&amp;lt;/sup&amp;gt;&lt;br /&gt;
|'''30 m/s², 5-500 Hz, 5mm'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|'''Bump'''&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot; colspan = &amp;quot;2&amp;quot;|Complies with '''IEC 68-2-29'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Storage&lt;br /&gt;
|'''1000 bumps '''in each direction (6) at''' 400 m/s², 6 ms'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Enclosure'''&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&lt;br /&gt;
Type&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|'''IP 40'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Radio frequencies sensibility===&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|Input measured with 50 Ω terminator&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Radiated RF: 80-1000 MHz, 80% AM 1 kHz, 10 V/m'''&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 20 µV&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Conducted RF: 0.15-80 MHz, 80% AM 1 kHz, 10 V'''&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 100 µV&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Magnetic field: 30 A/m, 50 Hz'''&lt;br /&gt;
|align = &amp;quot;center&amp;quot;|&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 2 µV&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Front-end==&lt;br /&gt;
===Dynamic inputs===&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|&lt;br /&gt;
Sampling&lt;br /&gt;
|Frequencies &amp;lt;br&amp;gt;(Additional decimators allow analysis bandwidth down to 0.8 Hz)&lt;br /&gt;
|'''102.4 kHz, 65.536 kHz, 51.2 kHz, 37.768 kHz, 25.6 kHz, &amp;lt;br&amp;gt;16.384 kHz, 12.8 kHz, 8.192 kHz, 6.4 kHz, 5.12 kHz, 4.096 kHz, &amp;lt;br&amp;gt;3.2 kHz, 2.048 kHz'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Converters&lt;br /&gt;
|One '''24 bit ''''''sigma-delta ADC''' for each input&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Frequency relative precision&lt;br /&gt;
|0.5 10&amp;lt;sup&amp;gt;-4 &amp;lt;/sup&amp;gt;(typical 1 10 &amp;lt;sup&amp;gt;–5&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Synchronization&lt;br /&gt;
|All inputs synchronized on the same sampling clock&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;5&amp;quot;|&lt;br /&gt;
Anti-aliasing filter&lt;br /&gt;
|Type&lt;br /&gt;
|Over-sampled digital filters&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Slope&lt;br /&gt;
|''' &amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; 400 dB/octave'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Pass band ripple&lt;br /&gt;
|'''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 0.003 dB'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Rejection of parasites bands&lt;br /&gt;
|'''&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; 110 dB ('''@ frequency &amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; 0.57 x FS)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Effective bandwidth&lt;br /&gt;
|'''0.43 x FS''' (ex: 23.2 kHz @ 51.2 kS/s)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
Range (peak)&lt;br /&gt;
|With amplifier (included)&lt;br /&gt;
|'''±17.5 mV, ±31.6 mV, ±60 mV, ±100 mV, ±175 mV, ±316 mV, ±600 mV, ±1 V, ±1.75 V, ±3.16 V, ±6 V '''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Direct&lt;br /&gt;
|'''±10 V '''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot;|&lt;br /&gt;
Absolute accuracy&lt;br /&gt;
|Resolution &lt;br /&gt;
|'''24 bits''' (144 dB)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|All input ranges at 1 kHz&lt;br /&gt;
|±'''0.05 dB '''(typical ±0.015 dB)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Temperature variability&lt;br /&gt;
|'''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 0.1 dB / 10°C'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
DC offset&lt;br /&gt;
|For ranges from '''±'''1 V to '''±'''10 V&lt;br /&gt;
|'''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; ±0.15 %''' of full scale &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|For ranges below '''±'''1 V&lt;br /&gt;
|'''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; ±1 mV'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;8&amp;quot;|&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;'''Frequency flatness and phase response'''&amp;lt;br&amp;gt;&lt;br /&gt;
|colspan = &amp;quot;2&amp;quot;|Includes channel to channel match with different gains&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|10 V range, 0 to 20 kHz&lt;br /&gt;
|'''±0.02 dB / ±0.02 °'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|10 V range, 20 to 40 kHz&lt;br /&gt;
|'''±0.05 dB  / ±0.05 °'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|175 mV to 6 V ranges, 0 to 20 kHz&lt;br /&gt;
|'''±0.02 dB / ±0.1 °'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|175 mV to 6 V ranges, 20 to 40 kHz&lt;br /&gt;
|'''±0.10 dB / ±0.5 °'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|17.5 mV to 100mV ranges, 0 to 10 kHz&lt;br /&gt;
|'''±0.05 dB / ±0.3 °'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|17.5 mV to 100mV ranges, 10 to 20 kHz &lt;br /&gt;
|'''±0.1 dB  / ±1 °'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|17.5 mV to 100mV ranges, 20 to 40 kHz &lt;br /&gt;
|'''±0.4 dB  / ±3 °'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|&lt;br /&gt;
Cross-talk&lt;br /&gt;
|Between N (N is odd) and N&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;1 inputs:&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|colspan = &amp;quot;2&amp;quot;|@ 1 kHz:''' &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; -112 dB,''' @ 20 kHz: '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; -86 dB, '''@ 40 kHz: '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; -80 dB '''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|colspan = &amp;quot;2&amp;quot;|Between any inputs excluding: N (N is odd) and N&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;1 inputs:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|colspan = &amp;quot;2&amp;quot;|@ 1 kHz: '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; -122 dB,''' @ 20 kHz:''' &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; -96 dB, ''' @ 40 kHz: '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; -90 dB'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot;|&lt;br /&gt;
Signal to noise ratio&lt;br /&gt;
|colspan = &amp;quot;2&amp;quot;|With 50 Ω terminators:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|colspan = &amp;quot;2&amp;quot;|10 V range, 40 kHz bandwidth: '''&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; 100 dB''', spurious lines '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; -115 dB''' of full scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|colspan = &amp;quot;2&amp;quot;|10 V range, 20 kHz bandwidth: '''&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; 104 dB''', spurious lines '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; -125 dB''' of full scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;6&amp;quot;|&lt;br /&gt;
Input noise&lt;br /&gt;
|With 50 Ω terminators &lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Thermal input noise&lt;br /&gt;
|'''20 nV/VHz'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|17.5 mV range &lt;br /&gt;
|20 kHz BW '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 3 µV rms''', 40 kHz BW: '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4.2 µV rms'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|100 mV range&lt;br /&gt;
|20 kHz BW '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 3 µV rms''', 40 kHz BW: '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 4.2 µV rms''' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1 V range&lt;br /&gt;
|20 kHz BW '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 5.4 µV rms''', 40 kHz BW: '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 8.5 µV rms''' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|10V range&lt;br /&gt;
|20 kHz BW '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 44 µVrms''', 40 kHz BW: '''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 70 µV rms''' &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Impedance&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|'''1 MΩ ±1%, &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 100 pF'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;6&amp;quot;|&lt;br /&gt;
Coupling&lt;br /&gt;
|'''AC '''&lt;br /&gt;
|-3dB Cut-off frequency 0.35 Hz ±10% (first order analog filter)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
DC &lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ICP '''&lt;br /&gt;
|'''4 mA''' power supply with AC coupling&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''ICP &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt; TEDS'''&lt;br /&gt;
|ICP with reverse current for TEDS reading&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''AC and DC float'''&lt;br /&gt;
|Independent ground references for each input within the current input range&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''GND '''&lt;br /&gt;
|Shortcuts input poles to the ground&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Protection&lt;br /&gt;
|On any inputs&amp;lt;sup&amp;gt;ii&amp;lt;/sup&amp;gt;&lt;br /&gt;
|'''±60 V''' peak without damage&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
TEDS&lt;br /&gt;
|&lt;br /&gt;
Standards&lt;br /&gt;
|&lt;br /&gt;
IEEE 1451.4 2001 revision 1 &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Templates&lt;br /&gt;
|Accelerometer/Force meter ('''25''')&amp;lt;br&amp;gt;Microphones ('''27''', '''28''' and '''29''')&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Dynamic'''&lt;br /&gt;
|Spectral domain&lt;br /&gt;
|'''&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; 120 dB''' &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Dynamic outputs===&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|'''Sampling'''&lt;br /&gt;
|Converters&lt;br /&gt;
|One '''24 bits DAC''' for each output&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Synchronization &lt;br /&gt;
|Same sampling clock as the dynamic inputs&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|&lt;br /&gt;
Range&lt;br /&gt;
|Direct &lt;br /&gt;
|±'''10 V peak'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|With attenuator (included) &lt;br /&gt;
|±'''1 V peak'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Clipping&lt;br /&gt;
|'''User selectable''' in the output range&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Digital gain&lt;br /&gt;
|'''From 10'''&amp;lt;sup&amp;gt;'''-5'''&amp;lt;/sup&amp;gt; to '''10'''&amp;lt;sup&amp;gt;'''3'''&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot;|'''Absolute accuracy'''&lt;br /&gt;
|Resolution&lt;br /&gt;
|'''24 bits''' (144 dB)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|All output ranges at 1 kHz&lt;br /&gt;
|±'''0.05 dB'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Temperature drift&lt;br /&gt;
|'''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 0.1 dB / 10°C'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|'''Frequency response'''&lt;br /&gt;
|colspan = &amp;quot;2&amp;quot;|Variation relative to 0 dB at 1 kHz&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|All ranges, at 10 kHz  &lt;br /&gt;
|±'''0.05 dB'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|All ranges, at 20 kHz  &lt;br /&gt;
|±'''0.15 dB'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|All ranges, at 40 kHz  &lt;br /&gt;
|±'''0.8 dB'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|'''Noise floor level'''&lt;br /&gt;
|10 V range, 20 kHz bandwidth &lt;br /&gt;
|'''110 dB''' of full scale, spurious lines ''' -125 dB''' of full scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|10 V range, 40 kHz bandwidth&lt;br /&gt;
|'''105 dB''' of full scale, spurious lines ''' -125 dB''' of full scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1 V range, 20 kHz bandwidth &lt;br /&gt;
|'''99 dB''' of full scale, spurious lines ''' -110 dB''' of full scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1 V range, 40 kHz bandwidth &lt;br /&gt;
|'''94 dB''' of full scale, spurious lines ''' -110 dB''' of full scale&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Impedance&lt;br /&gt;
|Impedance&lt;br /&gt;
|'''50''' Ω&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Current&lt;br /&gt;
|Max&amp;amp;nbsp;&lt;br /&gt;
|'''±10 mA'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Protection&lt;br /&gt;
|Sum of injected &amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt; generated voltages &lt;br /&gt;
|±'''15 V peak, '''On any output&amp;lt;sup&amp;gt;ii &amp;lt;/sup&amp;gt;&amp;lt;br&amp;gt;Permanent short circuit supported&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
Total harmonic distortion &lt;br /&gt;
|THD @ 1 kHz &lt;br /&gt;
|'''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 0.002% '''or'''  -94 dB '''at 20 kHz BW&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|THD @ 5 kHz&lt;br /&gt;
|'''&amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 0.005% '''or ''' -86 dB '''at 20 kHz BW&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Cross-talk&lt;br /&gt;
|Output 0 dBV to 50 Ω terminated input &lt;br /&gt;
|&lt;br /&gt;
Lower than measurable noise &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===External sync===&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|&lt;br /&gt;
Sampling&lt;br /&gt;
|Frequencies&lt;br /&gt;
|'''64 times over-sampling''' of the current input sampling &amp;lt;br&amp;gt;(up to '''6.4 MHz''')&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Converters&lt;br /&gt;
|High speed voltage comparator and time counter&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Range (peak)'''&lt;br /&gt;
|Direct&lt;br /&gt;
|±'''300 mV''', ±'''1 V''', ±'''3 V''', ±'''10 V '''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''threshold'''&lt;br /&gt;
|Amplitude precision&lt;br /&gt;
|±'''1 %''' of '''range'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|'''Setting'''&lt;br /&gt;
|Hystersis&lt;br /&gt;
|'''1%''' (of input range) to input range&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Hold off&lt;br /&gt;
|'''0 s''' to '''500 s'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Slope&lt;br /&gt;
|'''Rise''' or '''fall'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Hardwired pre-divider&lt;br /&gt;
|From''' 1''' to '''255'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Time resolution'''&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|'''&amp;lt;nowiki&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; 160 ns '''(0.06° at 1kHz and 1.2 ° at 20kHz)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Pulse rate'''&lt;br /&gt;
|Max&lt;br /&gt;
|'''375k pulse/s'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;2&amp;quot;|'''Coupling'''&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|'''AC'''&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|Cut-off frequency 0.35 Hz ±10% (analog filter)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
DC&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Impedance'''&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|&amp;amp;nbsp;&lt;br /&gt;
|bgcolor = &amp;quot;#D9D9D9&amp;quot;|'''1 M'''Ω, &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;/nowiki&amp;gt; 100 pF&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Protection'''&lt;br /&gt;
|on any external sync&amp;lt;sup&amp;gt;ii&amp;lt;/sup&amp;gt;&lt;br /&gt;
|±'''60 V peak''' without damage&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Digital computation==&lt;br /&gt;
The following table details the optional DSP modules that can be added to OR34 hardware to fit analysis mode calculation needs.&lt;br /&gt;
&lt;br /&gt;
===SPUs===&lt;br /&gt;
SPU (Signal Processing Units): the following table gives the characteristics of each analysis mode and the associated SPU consumption. For multi-analysis purpose, add the corresponding SPUs of each mode used simultaneously and increase the sum by 10%.  &amp;quot;Real-time&amp;quot; means that the analysis speed is faster than the input rate and does not miss any sample.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|rowspan = &amp;quot;5&amp;quot;|'''FFT'''&lt;br /&gt;
|Real-time FFT analysis with;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''401 lines '''(for 801, 1601,3201, 6401 lines multiply requested SPU respectively by 1.25,1.5, 2, 3)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''20 kHz''' bandwidth (Requested SPU are proportional to bandwidth)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''0%''' overlap&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1 channel processing = '''1 SPU'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|'''1/n Octave'''&lt;br /&gt;
|Real-time filter based 1/n octave analysis with:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''1/3rd''' octave resolution (for 1/12&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; and 1/24&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; octave multiply SPU respectively by 2 and 4)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''20 kHz''' bandwidth (Requested SPU are proportional to bandwidth)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1 channel processing = '''3 SPU'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;4&amp;quot;|'''Order analysis'''&lt;br /&gt;
|Real-time order spectrum analysis (re-sampled time signal) with:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Max order / order resolution = '''800'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Max RPM x Max order = '''1 200 000 '''(requested SPU is proportional to max RPM)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1 channel processing = '''3 SPU'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot;|'''Recorder'''&lt;br /&gt;
|Gap free recording with:&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''51.2 kHz''' sampling rate &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|1 channel processing = '''1 SPU'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Computation DSPs modules===&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|rowspan = &amp;quot;3&amp;quot;|&lt;br /&gt;
Type&lt;br /&gt;
|Sample size&lt;br /&gt;
|'''32 bit floating'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Computation words&lt;br /&gt;
|'''32/40 bits'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Memory&lt;br /&gt;
|'''4 MSamples'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|'''Power'''&lt;br /&gt;
|Computation capability&lt;br /&gt;
|'''12 SPU / DSP module'''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Computation DSP module / OR34 unit===&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Minimum&lt;br /&gt;
|'''1''' Computation DSP module&lt;br /&gt;
|&lt;br /&gt;
SPU&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Maximum&lt;br /&gt;
|'''2''' Computation DSP modules&lt;br /&gt;
|&lt;br /&gt;
SPU&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
The above specifications describe all the guaranteed capacities and performances of the instrument and are applicable to an OR34-4 hardware, powered for more than 15 minutes, at a stabilized room temperature of 23°C ±5°C and calibrated since less than one year.&lt;br /&gt;
&lt;br /&gt;
The adapted control software NVGate&amp;lt;sup&amp;gt;®&amp;lt;/sup&amp;gt; is described separately.&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;i&amp;lt;/sup&amp;gt; Prepared for future use: the related specifications or options are in development.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;ii&amp;lt;/sup&amp;gt; Exceeding absolute maximum ratings damages the system and voids guarantee.&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12857</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12857"/>
		<updated>2026-04-20T11:56:22Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
----&lt;br /&gt;
[https://partnerzone.digigram.com/s/NKAeEkA5ijFDZin SRS V1.3 here ]&lt;br /&gt;
Extract and launch the SRS_Tool.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
( You need to select the '''folder''' of the signal measurement. )&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Appendix SRS Limit Curves — Normative Reference =&lt;br /&gt;
&lt;br /&gt;
This page documents all predefined SRS limit curves available in the SRS Tool.&lt;br /&gt;
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Application !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on primary structure || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on panel or bracket || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Qualification unit (dedicated test article) || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Satellite equipment bay, component level || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || All payload positions, component level || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Small satellite missions, component level || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || European space programmes, proto-qualification || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;lt; 0.5 m from pyrotechnic source || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment 0.5–1.5 m from pyrotechnic source || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;gt; 1.5 m from pyrotechnic source || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Functional shock — must operate before and after || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Crash hazard — must not endanger personnel || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Bench handling — drops during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy lightweight shipboard equipment (&amp;lt; 136 kg) || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy medium-weight equipment (136–2 268 kg) || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — operational flight shock || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Avionics — bench handling during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — crash / emergency landing || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — general military ground equipment || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — aircraft store / weapon release || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — pyrotechnic devices, ejection seats || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — vehicle impacts, transport drops || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || NATO — pyroshock, severity level 3 || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || NATO — mechanical shock, severity level 3 || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || General industrial / commercial equipment qualification || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Rugged industrial equipment — severe shock || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Harsh shock environments — impacts, sudden accelerations || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — equipment mounted on vehicle body (interior) || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — bogie-mounted equipment (running gear) || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — under-body / axle-box mounted equipment || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How the SRS Tool uses these curves ==&lt;br /&gt;
&lt;br /&gt;
# Select a curve in the '''Pass/Fail''' tab.&lt;br /&gt;
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.&lt;br /&gt;
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)'''&lt;br /&gt;
# The overall result is PASS only if the margin is positive at '''all''' frequencies.&lt;br /&gt;
&lt;br /&gt;
== Adding a custom curve ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Category:SRS Tool]]&lt;br /&gt;
[[Category:Test Standards]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12852</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12852"/>
		<updated>2026-04-20T09:35:12Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://partnerzone.digigram.com/s/NKAeEkA5ijFDZin SRS V1.3 here ]&lt;br /&gt;
Extract and launch the SRS_Tool.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
( You need to select the '''folder''' of the signal measurement. )&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Appendix SRS Limit Curves — Normative Reference =&lt;br /&gt;
&lt;br /&gt;
This page documents all predefined SRS limit curves available in the SRS Tool.&lt;br /&gt;
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Application !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on primary structure || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on panel or bracket || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Qualification unit (dedicated test article) || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Satellite equipment bay, component level || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || All payload positions, component level || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Small satellite missions, component level || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || European space programmes, proto-qualification || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;lt; 0.5 m from pyrotechnic source || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment 0.5–1.5 m from pyrotechnic source || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;gt; 1.5 m from pyrotechnic source || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Functional shock — must operate before and after || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Crash hazard — must not endanger personnel || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Bench handling — drops during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy lightweight shipboard equipment (&amp;lt; 136 kg) || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy medium-weight equipment (136–2 268 kg) || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — operational flight shock || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Avionics — bench handling during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — crash / emergency landing || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — general military ground equipment || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — aircraft store / weapon release || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — pyrotechnic devices, ejection seats || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — vehicle impacts, transport drops || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || NATO — pyroshock, severity level 3 || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || NATO — mechanical shock, severity level 3 || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || General industrial / commercial equipment qualification || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Rugged industrial equipment — severe shock || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Harsh shock environments — impacts, sudden accelerations || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — equipment mounted on vehicle body (interior) || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — bogie-mounted equipment (running gear) || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — under-body / axle-box mounted equipment || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How the SRS Tool uses these curves ==&lt;br /&gt;
&lt;br /&gt;
# Select a curve in the '''Pass/Fail''' tab.&lt;br /&gt;
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.&lt;br /&gt;
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)'''&lt;br /&gt;
# The overall result is PASS only if the margin is positive at '''all''' frequencies.&lt;br /&gt;
&lt;br /&gt;
== Adding a custom curve ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Category:SRS Tool]]&lt;br /&gt;
[[Category:Test Standards]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12851</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12851"/>
		<updated>2026-04-20T09:30:43Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://partnerzone.digigram.com/s/NKAeEkA5ijFDZin SRS V1.3 here ]&lt;br /&gt;
Extract and launch the SRS_Tool.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
( You need to select the '''folder''' of the signal measurement. )&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Appendix SRS Limit Curves — Normative Reference =&lt;br /&gt;
&lt;br /&gt;
This page documents all predefined SRS limit curves available in the SRS Tool.&lt;br /&gt;
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Application !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on primary structure || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on panel or bracket || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Qualification unit (dedicated test article) || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Satellite equipment bay, component level || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || All payload positions, component level || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Small satellite missions, component level || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || European space programmes, proto-qualification || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;lt; 0.5 m from pyrotechnic source || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment 0.5–1.5 m from pyrotechnic source || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;gt; 1.5 m from pyrotechnic source || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Functional shock — must operate before and after || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Crash hazard — must not endanger personnel || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Bench handling — drops during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy lightweight shipboard equipment (&amp;lt; 136 kg) || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy medium-weight equipment (136–2 268 kg) || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — operational flight shock || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Avionics — bench handling during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — crash / emergency landing || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — general military ground equipment || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — aircraft store / weapon release || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — pyrotechnic devices, ejection seats || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — vehicle impacts, transport drops || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || NATO — pyroshock, severity level 3 || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || NATO — mechanical shock, severity level 3 || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || General industrial / commercial equipment qualification || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Rugged industrial equipment — severe shock || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Harsh shock environments — impacts, sudden accelerations || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — equipment mounted on vehicle body (interior) || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — bogie-mounted equipment (running gear) || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — under-body / axle-box mounted equipment || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How the SRS Tool uses these curves ==&lt;br /&gt;
&lt;br /&gt;
# Select a curve in the '''Pass/Fail''' tab.&lt;br /&gt;
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.&lt;br /&gt;
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)'''&lt;br /&gt;
# The overall result is PASS only if the margin is positive at '''all''' frequencies.&lt;br /&gt;
&lt;br /&gt;
== Adding a custom curve ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Category:SRS Tool]]&lt;br /&gt;
[[Category:Test Standards]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12850</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12850"/>
		<updated>2026-04-20T09:30:35Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://partnerzone.digigram.com/s/NKAeEkA5ijFDZin SRS V1.3 here ]&lt;br /&gt;
Extract and launch the SRS_Tool.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
( You need to select the '''folder''' of the signal measurement. )&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Appendix SRS Limit Curves — Normative Reference =&lt;br /&gt;
&lt;br /&gt;
This page documents all predefined SRS limit curves available in the SRS Tool.&lt;br /&gt;
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Application !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on primary structure || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on panel or bracket || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Qualification unit (dedicated test article) || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Satellite equipment bay, component level || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || All payload positions, component level || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Small satellite missions, component level || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || European space programmes, proto-qualification || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;lt; 0.5 m from pyrotechnic source || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment 0.5–1.5 m from pyrotechnic source || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;gt; 1.5 m from pyrotechnic source || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Functional shock — must operate before and after || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Crash hazard — must not endanger personnel || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Bench handling — drops during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy lightweight shipboard equipment (&amp;lt; 136 kg) || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy medium-weight equipment (136–2 268 kg) || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — operational flight shock || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Avionics — bench handling during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — crash / emergency landing || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — general military ground equipment || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — aircraft store / weapon release || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — pyrotechnic devices, ejection seats || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — vehicle impacts, transport drops || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || NATO — pyroshock, severity level 3 || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || NATO — mechanical shock, severity level 3 || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || General industrial / commercial equipment qualification || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Rugged industrial equipment — severe shock || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Harsh shock environments — impacts, sudden accelerations || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — equipment mounted on vehicle body (interior) || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — bogie-mounted equipment (running gear) || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — under-body / axle-box mounted equipment || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How the SRS Tool uses these curves ==&lt;br /&gt;
&lt;br /&gt;
# Select a curve in the '''Pass/Fail''' tab.&lt;br /&gt;
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.&lt;br /&gt;
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)'''&lt;br /&gt;
# The overall result is PASS only if the margin is positive at '''all''' frequencies.&lt;br /&gt;
&lt;br /&gt;
== Adding a custom curve ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Category:SRS Tool]]&lt;br /&gt;
[[Category:Test Standards]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12849</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12849"/>
		<updated>2026-04-20T09:29:46Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://partnerzone.digigram.com/s/NKAeEkA5ijFDZin SRS V1.3 here ]&lt;br /&gt;
Extract and launch the SRS_Tool.exe&lt;br /&gt;
&lt;br /&gt;
You need to select the &amp;lt;big&amp;gt;FOLDER&amp;lt;/big&amp;gt; '''Bold text'''of the measurement &lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Appendix SRS Limit Curves — Normative Reference =&lt;br /&gt;
&lt;br /&gt;
This page documents all predefined SRS limit curves available in the SRS Tool.&lt;br /&gt;
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Application !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on primary structure || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on panel or bracket || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Qualification unit (dedicated test article) || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Satellite equipment bay, component level || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || All payload positions, component level || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Small satellite missions, component level || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || European space programmes, proto-qualification || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;lt; 0.5 m from pyrotechnic source || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment 0.5–1.5 m from pyrotechnic source || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;gt; 1.5 m from pyrotechnic source || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Functional shock — must operate before and after || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Crash hazard — must not endanger personnel || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Bench handling — drops during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy lightweight shipboard equipment (&amp;lt; 136 kg) || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy medium-weight equipment (136–2 268 kg) || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — operational flight shock || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Avionics — bench handling during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — crash / emergency landing || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — general military ground equipment || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — aircraft store / weapon release || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — pyrotechnic devices, ejection seats || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — vehicle impacts, transport drops || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || NATO — pyroshock, severity level 3 || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || NATO — mechanical shock, severity level 3 || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || General industrial / commercial equipment qualification || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Rugged industrial equipment — severe shock || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Harsh shock environments — impacts, sudden accelerations || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — equipment mounted on vehicle body (interior) || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — bogie-mounted equipment (running gear) || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — under-body / axle-box mounted equipment || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How the SRS Tool uses these curves ==&lt;br /&gt;
&lt;br /&gt;
# Select a curve in the '''Pass/Fail''' tab.&lt;br /&gt;
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.&lt;br /&gt;
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)'''&lt;br /&gt;
# The overall result is PASS only if the margin is positive at '''all''' frequencies.&lt;br /&gt;
&lt;br /&gt;
== Adding a custom curve ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Category:SRS Tool]]&lt;br /&gt;
[[Category:Test Standards]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12848</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12848"/>
		<updated>2026-04-20T09:18:16Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* How the SRS Tool uses these curves */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Appendix SRS Limit Curves — Normative Reference =&lt;br /&gt;
&lt;br /&gt;
This page documents all predefined SRS limit curves available in the SRS Tool.&lt;br /&gt;
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Application !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on primary structure || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on panel or bracket || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Qualification unit (dedicated test article) || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Satellite equipment bay, component level || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || All payload positions, component level || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Small satellite missions, component level || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || European space programmes, proto-qualification || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;lt; 0.5 m from pyrotechnic source || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment 0.5–1.5 m from pyrotechnic source || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;gt; 1.5 m from pyrotechnic source || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Functional shock — must operate before and after || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Crash hazard — must not endanger personnel || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Bench handling — drops during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy lightweight shipboard equipment (&amp;lt; 136 kg) || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy medium-weight equipment (136–2 268 kg) || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — operational flight shock || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Avionics — bench handling during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — crash / emergency landing || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — general military ground equipment || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — aircraft store / weapon release || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — pyrotechnic devices, ejection seats || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — vehicle impacts, transport drops || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || NATO — pyroshock, severity level 3 || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || NATO — mechanical shock, severity level 3 || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || General industrial / commercial equipment qualification || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Rugged industrial equipment — severe shock || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Harsh shock environments — impacts, sudden accelerations || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — equipment mounted on vehicle body (interior) || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — bogie-mounted equipment (running gear) || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — under-body / axle-box mounted equipment || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How the SRS Tool uses these curves ==&lt;br /&gt;
&lt;br /&gt;
# Select a curve in the '''Pass/Fail''' tab.&lt;br /&gt;
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.&lt;br /&gt;
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)'''&lt;br /&gt;
# The overall result is PASS only if the margin is positive at '''all''' frequencies.&lt;br /&gt;
&lt;br /&gt;
== Adding a custom curve ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Category:SRS Tool]]&lt;br /&gt;
[[Category:Test Standards]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12847</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12847"/>
		<updated>2026-04-20T09:17:57Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* How the SRS Tool uses these curves */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Appendix SRS Limit Curves — Normative Reference =&lt;br /&gt;
&lt;br /&gt;
This page documents all predefined SRS limit curves available in the SRS Tool.&lt;br /&gt;
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Application !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on primary structure || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on panel or bracket || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Qualification unit (dedicated test article) || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Satellite equipment bay, component level || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || All payload positions, component level || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Small satellite missions, component level || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || European space programmes, proto-qualification || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;lt; 0.5 m from pyrotechnic source || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment 0.5–1.5 m from pyrotechnic source || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;gt; 1.5 m from pyrotechnic source || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Functional shock — must operate before and after || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Crash hazard — must not endanger personnel || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Bench handling — drops during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy lightweight shipboard equipment (&amp;lt; 136 kg) || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy medium-weight equipment (136–2 268 kg) || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — operational flight shock || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Avionics — bench handling during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — crash / emergency landing || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — general military ground equipment || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — aircraft store / weapon release || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — pyrotechnic devices, ejection seats || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — vehicle impacts, transport drops || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || NATO — pyroshock, severity level 3 || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || NATO — mechanical shock, severity level 3 || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || General industrial / commercial equipment qualification || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Rugged industrial equipment — severe shock || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Harsh shock environments — impacts, sudden accelerations || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — equipment mounted on vehicle body (interior) || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — bogie-mounted equipment (running gear) || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — under-body / axle-box mounted equipment || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How the SRS Tool uses these curves ==&lt;br /&gt;
&lt;br /&gt;
# Select a curve in the '''Pass/Fail''' tab.&lt;br /&gt;
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.&lt;br /&gt;
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)'''&lt;br /&gt;
 Positive margin → SRS is below the limit ('''PASS''' at that frequency)&lt;br /&gt;
 Negative margin → SRS exceeds the limit ('''FAIL''' at that frequency)&lt;br /&gt;
&lt;br /&gt;
# The overall result is PASS only if the margin is positive at '''all''' frequencies.&lt;br /&gt;
&lt;br /&gt;
== Adding a custom curve ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Category:SRS Tool]]&lt;br /&gt;
[[Category:Test Standards]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12846</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12846"/>
		<updated>2026-04-20T09:17:38Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Appendix SRS Limit Curves — Normative Reference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Appendix SRS Limit Curves — Normative Reference =&lt;br /&gt;
&lt;br /&gt;
This page documents all predefined SRS limit curves available in the SRS Tool.&lt;br /&gt;
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Application !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on primary structure || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on panel or bracket || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Qualification unit (dedicated test article) || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Satellite equipment bay, component level || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || All payload positions, component level || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Small satellite missions, component level || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || European space programmes, proto-qualification || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;lt; 0.5 m from pyrotechnic source || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment 0.5–1.5 m from pyrotechnic source || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;gt; 1.5 m from pyrotechnic source || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Functional shock — must operate before and after || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Crash hazard — must not endanger personnel || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Bench handling — drops during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy lightweight shipboard equipment (&amp;lt; 136 kg) || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy medium-weight equipment (136–2 268 kg) || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — operational flight shock || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Avionics — bench handling during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — crash / emergency landing || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — general military ground equipment || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — aircraft store / weapon release || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — pyrotechnic devices, ejection seats || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — vehicle impacts, transport drops || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || NATO — pyroshock, severity level 3 || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || NATO — mechanical shock, severity level 3 || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || General industrial / commercial equipment qualification || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Rugged industrial equipment — severe shock || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Harsh shock environments — impacts, sudden accelerations || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — equipment mounted on vehicle body (interior) || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — bogie-mounted equipment (running gear) || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — under-body / axle-box mounted equipment || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How the SRS Tool uses these curves ==&lt;br /&gt;
&lt;br /&gt;
# Select a curve in the '''Pass/Fail''' tab.&lt;br /&gt;
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.&lt;br /&gt;
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)'''&lt;br /&gt;
** Positive margin → SRS is below the limit ('''PASS''' at that frequency)&lt;br /&gt;
** Negative margin → SRS exceeds the limit ('''FAIL''' at that frequency)&lt;br /&gt;
# The overall result is PASS only if the margin is positive at '''all''' frequencies.&lt;br /&gt;
&lt;br /&gt;
== Adding a custom curve ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Category:SRS Tool]]&lt;br /&gt;
[[Category:Test Standards]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12845</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12845"/>
		<updated>2026-04-20T09:17:10Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Appendix SRS Limit Curves — Normative Reference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Appendix SRS Limit Curves — Normative Reference =&lt;br /&gt;
&lt;br /&gt;
This page documents all predefined SRS limit curves available in the SRS Tool.&lt;br /&gt;
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Application !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on primary structure || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Hardware on panel or bracket || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Qualification unit (dedicated test article) || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Satellite equipment bay, component level || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || All payload positions, component level || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || Small satellite missions, component level || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || European space programmes, proto-qualification || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;lt; 0.5 m from pyrotechnic source || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment 0.5–1.5 m from pyrotechnic source || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || Equipment &amp;gt; 1.5 m from pyrotechnic source || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Functional shock — must operate before and after || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Crash hazard — must not endanger personnel || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Bench handling — drops during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy lightweight shipboard equipment (&amp;lt; 136 kg) || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || US Navy medium-weight equipment (136–2 268 kg) || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — operational flight shock || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Avionics — bench handling during maintenance || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Airborne equipment — crash / emergency landing || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — general military ground equipment || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || UK defence — aircraft store / weapon release || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — pyrotechnic devices, ejection seats || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || French military — vehicle impacts, transport drops || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || NATO — pyroshock, severity level 3 || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || NATO — mechanical shock, severity level 3 || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || General industrial / commercial equipment qualification || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Rugged industrial equipment — severe shock || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Harsh shock environments — impacts, sudden accelerations || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — equipment mounted on vehicle body (interior) || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — bogie-mounted equipment (running gear) || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || Railway — under-body / axle-box mounted equipment || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Space / Launcher ==&lt;br /&gt;
&lt;br /&gt;
=== NASA GEVS — Protoflight, 2500 g (GSFC-STD-7000B) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || NASA GSFC-STD-7000B Rev B (2013)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Hardware mounted on primary structure&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Protoflight SRS for hardware mounted on primary structure. The curve rises at +9 dB/oct from 20 Hz, reaching a flat plateau of 2 500 g above 100 Hz. Breakpoints are faithful to the published standard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 224&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 2 500&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 500&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== NASA GEVS — Protoflight, 1 000 g (GSFC-STD-7000B) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || NASA GSFC-STD-7000B Rev B (2013)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Hardware mounted on a panel or bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Lower protoflight level for panel- or bracket-mounted hardware. Same +9 dB/oct slope, plateau at 1 000 g. Choose between 2 500 g and 1 000 g based on the mounting position specified in the programme's MTP/ATP.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 89&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 1 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== NASA GEVS — Qualification, 3 750 g (GSFC-STD-7000B) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || NASA GSFC-STD-7000B Rev B (2013)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Qualification test (1.5 × protoflight 2 500 g level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Qualification SRS = 1.5 × protoflight 2 500 g level, per GSFC-STD-7000B. Applied when a dedicated qualification unit is available (as opposed to protoflight testing, which tests the flight unit at a lower margin).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 335&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 3 750&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 3 750&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ariane 5 — Equipment Bay, Component Level ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || Ariane 5 User's Manual Issue 5 Rev 2 (2016), Annex 2&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Satellite equipment bay, component level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Representative SRS at the equipment bay for Ariane 5 missions. Covers separation events (SYLDA, VEB, fairing jettison, etc.). Actual levels depend on satellite integration position — contact Arianespace for flight-specific requirements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ariane 6 — Component Level ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || Ariane 6 User's Manual Issue 1 Rev 0 (2020)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Component level, all payload positions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Component-level SRS for Ariane 6 missions. Slightly lower than Ariane 5 thanks to the improved fairing and dispenser design. Contact Arianespace for actual flight requirements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 80&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 1 600&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 600&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== VEGA-C — Component Level ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || VEGA-C User's Manual Issue 0 Rev 1 (2022)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Small satellite missions, component level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Component-level SRS for VEGA-C missions. Contact Avio / ESA for actual flight requirements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 60&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 1 200&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 200&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== ECSS-E-ST-10-03C — Protoqualification (représentatif) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || ECSS-E-ST-10-03C (2012)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || European space programmes, proto-qualification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Representative proto-qualification SRS for European space programmes. ECSS-E-ST-10-03C defines the methodology and test flow, not a universal level. Actual levels must come from the programme's System Verification Plan (SVP).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 500&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Military / Pyroshock — MIL-STD-810H Method 517 ==&lt;br /&gt;
&lt;br /&gt;
Method 517 (Pyroshock) is one of the few military standards that defines SRS limits '''directly''' — all three curves below are therefore '''[normative]'''.&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.517 — Near-field (&amp;lt; 0.5 m) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 517.2, Table 517.2-IV&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Equipment &amp;lt; 0.5 m from the pyrotechnic source&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Pyroshock near-field SRS. Rises at +9 dB/oct from 100 Hz, reaching a flat plateau of 10 000 g above 3 000 Hz. This is the most severe of the three field classifications.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 61&lt;br /&gt;
|-&lt;br /&gt;
| 3 000 || 10 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 10 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 517.2, Table 517.2-IV&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Equipment 0.5–1.5 m from the pyrotechnic source&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Pyroshock mid-field SRS. Same +9 dB/oct slope, plateau at 1 000 g above 3 000 Hz. 10× lower than near-field (20 dB).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 3 000 || 1 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.517 — Far-field (&amp;gt; 1.5 m) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 517.2, Table 517.2-IV&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Equipment &amp;gt; 1.5 m from the pyrotechnic source&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Pyroshock far-field SRS. Plateau at 100 g above 3 000 Hz. 100× lower than near-field (40 dB).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 0.6&lt;br /&gt;
|-&lt;br /&gt;
| 3 000 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Military / Mechanical Shock — MIL-STD-810H Method 516 ==&lt;br /&gt;
&lt;br /&gt;
Method 516 defines '''time-domain waveforms''' (half-sine, sawtooth), not SRS limits directly. The SRS envelopes below are computed from those pulses and are therefore '''[approximate]'''. For exact compliance, import the waveform into the SRS Tool and compute the SRS directly.&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.516.8 — Functional, 40 g half-sine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 516.8, Procedure I&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 40 g / 11 ms half-sine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Functional shock — equipment must operate normally before and after. The standard defines a 40 g, 11 ms half-sine pulse. The SRS envelope peaks near 1/(2τ) ≈ 45 Hz at 2×A = 80 g and flattens to the peak amplitude above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 80&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 80&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 40&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.516.8 — Crash Hazard, 40 g sawtooth ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 516.8, Procedure V&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 40 g / 11 ms terminal sawtooth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Crash hazard — equipment must not become a hazard during a crash. The terminal sawtooth waveform has a broader SRS plateau than a half-sine of the same amplitude.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 60&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 60&lt;br /&gt;
|-&lt;br /&gt;
| 500 || 40&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.516.8 — Bench Handling, 15 g half-sine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 516.8, Procedure VI&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 15 g / 11 ms half-sine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Bench handling — simulates drops and knocks during handling and maintenance. Lower level than functional shock.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Military / Naval — MIL-S-901D ==&lt;br /&gt;
&lt;br /&gt;
MIL-S-901D specifies a physical '''machine test''' (Lightweight Shock Machine or floating barge), not an SRS limit. The curves below are '''[indicative]''' envelopes representative of the machine output.&lt;br /&gt;
&lt;br /&gt;
=== MIL-S-901D — Grade A (lightweight, &amp;lt; 136 kg) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-S-901D (1989), Grade A&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || US Navy — lightweight equipment (&amp;lt; 136 kg)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' High-energy naval shock test for lightweight equipment. Uses the Lightweight Shock Machine (LWSM). Representative SRS envelope of the machine output.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 500&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIL-S-901D — Grade B (mediumweight, 136–2 268 kg) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-S-901D (1989), Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || US Navy — medium-weight equipment (136–2 268 kg)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Naval shock using the floating barge platform. Lower levels than Grade A due to the larger test article mass and different test rig.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 250&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 1 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Aviation — RTCA DO-160G Section 7 ==&lt;br /&gt;
&lt;br /&gt;
DO-160G Section 7 defines '''time-domain shock pulses''', not SRS limits. All three curves are '''[approximate]''' envelopes computed from those pulses.&lt;br /&gt;
&lt;br /&gt;
=== DO-160G Sect.7 — Cat. B, Operational (6 g half-sine) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || RTCA DO-160G, Section 7, Category B&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 6 g / 11 ms half-sine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Aircraft operational shock — in-service turbulence, hard landings, taxiing. The least severe DO-160G shock category.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== DO-160G Sect.7 — Cat. C, Bench Handling (15 g half-sine) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || RTCA DO-160G, Section 7, Category C&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 15 g / 11 ms half-sine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Bench handling shock for avionics — drops, knocks during maintenance. Matches MIL-STD-810H Procedure VI levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== DO-160G Sect.7 — Cat. D, Crash (20 g) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || RTCA DO-160G, Section 7, Category D&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 20 g equivalent crash pulse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Crash / emergency landing survivability requirement. Equipment must not create a hazard to occupants during a crash sequence.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 40&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 40&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 20&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== European Defence ==&lt;br /&gt;
&lt;br /&gt;
=== DEF STAN 00-35 Pt.3 — Category M (Mechanical) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || DEF STAN 00-35 Part 3 Issue 4, Category M&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || UK defence — general mechanical shock&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' UK Ministry of Defence standard for general mechanical shock environments. Levels depend on the platform category. Always verify against the Test Schedule (TS) applicable to the programme.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 25&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 250&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 1 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== DEF STAN 00-35 Pt.3 — Category P (Pyrotechnic) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || DEF STAN 00-35 Part 3 Issue 4, Category P&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || UK defence — aircraft store separation (pyrotechnic)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Pyrotechnic shock for aircraft-delivered stores (bombs, missiles). More severe than Category M. Verify against the applicable Test Schedule.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 1 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== GAM EG-13 — Choc sévère (pyrotechnique) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || DGA GAM EG-13 (2002), Tableau 3, Choc sévère&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || French DGA — severe pyrotechnic shock environment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' French DGA (Direction Générale de l'Armement) standard for severe shock, typically from pyrotechnic devices (ejection seats, weapon release). Verify exact levels in Table 3 of the applicable programme document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 40&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 200&lt;br /&gt;
|-&lt;br /&gt;
| 1 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== GAM EG-13 — Choc modéré (mécanique) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || DGA GAM EG-13 (2002), Tableau 3, Choc modéré&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || French DGA — moderate mechanical shock environment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' French DGA standard for moderate mechanical shock (vehicle impacts, transport drops). Significantly lower levels than the pyrotechnic environment.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 20&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 1 000 || 500&lt;br /&gt;
|-&lt;br /&gt;
| 5 000 || 500&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== NATO — STANAG 4370 / AECTP 201 ==&lt;br /&gt;
&lt;br /&gt;
=== STANAG 4370 AECTP 201 — Meth.417 Pyroshock ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || STANAG 4370 AECTP 201, Method 417 (Ed.3, 2009)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || NATO — pyroshock, severity level 3 (severe platform)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' NATO standardised pyroshock test method (SRS method). The curve shown is representative of severity level 3 (severe platform shock). Actual levels must be drawn from the applicable NATO programme documents.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 1 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== STANAG 4370 AECTP 201 — Meth.403 Mechanical Shock ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || STANAG 4370 AECTP 201, Method 403 (Ed.3, 2009)&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || Half-sine pulse, severity level 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' NATO mechanical shock — Method 403 defines time-domain pulses (half-sine), not SRS directly. The curve shown is an SRS envelope computed from the severity level 3 half-sine waveform.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 500 || 25&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 25&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Industrial — IEC 60068-2-27 ==&lt;br /&gt;
&lt;br /&gt;
IEC 60068-2-27 (Test Ea) defines '''half-sine time-domain pulses''', not SRS limits. All curves are '''[approximate]'''.&lt;br /&gt;
&lt;br /&gt;
=== IEC 60068-2-27 — Test Ea, 15 g / 11 ms half-sine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 60068-2-27 Ed.3 (2008), Test Ea — 15 g / 11 ms&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || General industrial equipment — standard shock level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Standard environmental test shock (Test Ea). Widely used for industrial and commercial equipment qualification. 15 g / 11 ms half-sine is the most common combination.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== IEC 60068-2-27 — Test Ea, 50 g / 11 ms half-sine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 60068-2-27 Ed.3 (2008), Test Ea — 50 g / 11 ms (severe)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Industrial equipment — severe shock level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Severe industrial shock. Used for rugged equipment or harsh installation environments.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== IEC 60068-2-27 — Test Ea, 100 g / 6 ms half-sine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 60068-2-27 Ed.3 (2008), Test Ea — 100 g / 6 ms&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Industrial equipment — harsh shock level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Harsh shock level — short duration (6 ms) shifts the SRS peak to ~83 Hz. Used for equipment exposed to impacts, sudden accelerations, or harsh transport.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 200&lt;br /&gt;
|-&lt;br /&gt;
| 83 || 200&lt;br /&gt;
|-&lt;br /&gt;
| 500 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Railway — IEC 61373 ==&lt;br /&gt;
&lt;br /&gt;
IEC 61373 defines '''time-domain shock pulses''' for railway equipment. All curves are '''[approximate]'''.&lt;br /&gt;
&lt;br /&gt;
=== IEC 61373 Cat.1 Class B — Railway, Vehicle Body ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 61373 Ed.2 (2010), Category 1 Class B&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Equipment mounted on the vehicle body (interior)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Functional shock for body-mounted railway equipment. IEC 61373 defines a 3 g / 30 ms half-sine. The long duration (30 ms) places the SRS peak at only ~16 Hz — the lowest peak frequency of all curves in the library.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== IEC 61373 Cat.1 Class A — Railway, Bogie-Mounted ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 61373 Ed.2 (2010), Category 1 Class A&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Equipment mounted on the bogie (running gear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Bogie-mounted equipment is directly exposed to rail irregularities and rail joints. Significantly higher levels than Class B (vehicle body). IEC 61373 defines a time-domain pulse, not an SRS.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== IEC 61373 Cat.2 — Railway, Under-Body Mounted ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 61373 Ed.2 (2010), Category 2&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Under-body mounted equipment, axle box area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Most severe shock category in IEC 61373. Under-body equipment (including axle-box area) is exposed to the highest shock levels on a railway vehicle.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 25&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 25&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== How the SRS Tool uses these curves ==&lt;br /&gt;
&lt;br /&gt;
# Select a curve in the '''Pass/Fail''' tab.&lt;br /&gt;
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.&lt;br /&gt;
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)'''&lt;br /&gt;
** Positive margin → SRS is below the limit ('''PASS''' at that frequency)&lt;br /&gt;
** Negative margin → SRS exceeds the limit ('''FAIL''' at that frequency)&lt;br /&gt;
# The overall result is PASS only if the margin is positive at '''all''' frequencies.&lt;br /&gt;
&lt;br /&gt;
== Adding a custom curve ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Category:SRS Tool]]&lt;br /&gt;
[[Category:Test Standards]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12844</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12844"/>
		<updated>2026-04-20T09:12:12Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Appendix SRS Limit Curves — Normative Reference =&lt;br /&gt;
&lt;br /&gt;
This page documents all predefined SRS limit curves available in the SRS Tool.&lt;br /&gt;
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface.&lt;br /&gt;
&lt;br /&gt;
== Confidence level indicators ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
! Tag !! Meaning !! What to expect&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;&amp;quot; | [normative]&lt;br /&gt;
| Curve taken '''directly from the published standard''' as an SRS specification.&lt;br /&gt;
| Breakpoints are faithful to the document. Use for compliance testing.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;&amp;quot; | [approximate]&lt;br /&gt;
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS.&lt;br /&gt;
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;&amp;quot; | [indicative]&lt;br /&gt;
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available.&lt;br /&gt;
| Use as a first-pass estimate only. Always verify with the applicable programme document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g).&lt;br /&gt;
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Space / Launcher ==&lt;br /&gt;
&lt;br /&gt;
=== NASA GEVS — Protoflight, 2500 g (GSFC-STD-7000B) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || NASA GSFC-STD-7000B Rev B (2013)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Hardware mounted on primary structure&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Protoflight SRS for hardware mounted on primary structure. The curve rises at +9 dB/oct from 20 Hz, reaching a flat plateau of 2 500 g above 100 Hz. Breakpoints are faithful to the published standard.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 224&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 2 500&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 500&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== NASA GEVS — Protoflight, 1 000 g (GSFC-STD-7000B) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || NASA GSFC-STD-7000B Rev B (2013)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Hardware mounted on a panel or bracket&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Lower protoflight level for panel- or bracket-mounted hardware. Same +9 dB/oct slope, plateau at 1 000 g. Choose between 2 500 g and 1 000 g based on the mounting position specified in the programme's MTP/ATP.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 89&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 1 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== NASA GEVS — Qualification, 3 750 g (GSFC-STD-7000B) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || NASA GSFC-STD-7000B Rev B (2013)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Qualification test (1.5 × protoflight 2 500 g level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Qualification SRS = 1.5 × protoflight 2 500 g level, per GSFC-STD-7000B. Applied when a dedicated qualification unit is available (as opposed to protoflight testing, which tests the flight unit at a lower margin).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 335&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 3 750&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 3 750&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ariane 5 — Equipment Bay, Component Level ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || Ariane 5 User's Manual Issue 5 Rev 2 (2016), Annex 2&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Satellite equipment bay, component level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Representative SRS at the equipment bay for Ariane 5 missions. Covers separation events (SYLDA, VEB, fairing jettison, etc.). Actual levels depend on satellite integration position — contact Arianespace for flight-specific requirements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Ariane 6 — Component Level ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || Ariane 6 User's Manual Issue 1 Rev 0 (2020)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Component level, all payload positions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Component-level SRS for Ariane 6 missions. Slightly lower than Ariane 5 thanks to the improved fairing and dispenser design. Contact Arianespace for actual flight requirements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 80&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 1 600&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 600&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== VEGA-C — Component Level ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || VEGA-C User's Manual Issue 0 Rev 1 (2022)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Small satellite missions, component level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Component-level SRS for VEGA-C missions. Contact Avio / ESA for actual flight requirements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 60&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 1 200&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 200&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== ECSS-E-ST-10-03C — Protoqualification (représentatif) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || ECSS-E-ST-10-03C (2012)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || European space programmes, proto-qualification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Representative proto-qualification SRS for European space programmes. ECSS-E-ST-10-03C defines the methodology and test flow, not a universal level. Actual levels must come from the programme's System Verification Plan (SVP).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 500&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Military / Pyroshock — MIL-STD-810H Method 517 ==&lt;br /&gt;
&lt;br /&gt;
Method 517 (Pyroshock) is one of the few military standards that defines SRS limits '''directly''' — all three curves below are therefore '''[normative]'''.&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.517 — Near-field (&amp;lt; 0.5 m) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 517.2, Table 517.2-IV&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Equipment &amp;lt; 0.5 m from the pyrotechnic source&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Pyroshock near-field SRS. Rises at +9 dB/oct from 100 Hz, reaching a flat plateau of 10 000 g above 3 000 Hz. This is the most severe of the three field classifications.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 61&lt;br /&gt;
|-&lt;br /&gt;
| 3 000 || 10 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 10 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 517.2, Table 517.2-IV&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Equipment 0.5–1.5 m from the pyrotechnic source&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Pyroshock mid-field SRS. Same +9 dB/oct slope, plateau at 1 000 g above 3 000 Hz. 10× lower than near-field (20 dB).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 3 000 || 1 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.517 — Far-field (&amp;gt; 1.5 m) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | [normative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 517.2, Table 517.2-IV&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Equipment &amp;gt; 1.5 m from the pyrotechnic source&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Pyroshock far-field SRS. Plateau at 100 g above 3 000 Hz. 100× lower than near-field (40 dB).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 0.6&lt;br /&gt;
|-&lt;br /&gt;
| 3 000 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Military / Mechanical Shock — MIL-STD-810H Method 516 ==&lt;br /&gt;
&lt;br /&gt;
Method 516 defines '''time-domain waveforms''' (half-sine, sawtooth), not SRS limits directly. The SRS envelopes below are computed from those pulses and are therefore '''[approximate]'''. For exact compliance, import the waveform into the SRS Tool and compute the SRS directly.&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.516.8 — Functional, 40 g half-sine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 516.8, Procedure I&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 40 g / 11 ms half-sine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Functional shock — equipment must operate normally before and after. The standard defines a 40 g, 11 ms half-sine pulse. The SRS envelope peaks near 1/(2τ) ≈ 45 Hz at 2×A = 80 g and flattens to the peak amplitude above.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 80&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 80&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 40&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.516.8 — Crash Hazard, 40 g sawtooth ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 516.8, Procedure V&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 40 g / 11 ms terminal sawtooth&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Crash hazard — equipment must not become a hazard during a crash. The terminal sawtooth waveform has a broader SRS plateau than a half-sine of the same amplitude.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 60&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 60&lt;br /&gt;
|-&lt;br /&gt;
| 500 || 40&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIL-STD-810H Meth.516.8 — Bench Handling, 15 g half-sine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-STD-810H, Method 516.8, Procedure VI&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 15 g / 11 ms half-sine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Bench handling — simulates drops and knocks during handling and maintenance. Lower level than functional shock.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Military / Naval — MIL-S-901D ==&lt;br /&gt;
&lt;br /&gt;
MIL-S-901D specifies a physical '''machine test''' (Lightweight Shock Machine or floating barge), not an SRS limit. The curves below are '''[indicative]''' envelopes representative of the machine output.&lt;br /&gt;
&lt;br /&gt;
=== MIL-S-901D — Grade A (lightweight, &amp;lt; 136 kg) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-S-901D (1989), Grade A&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || US Navy — lightweight equipment (&amp;lt; 136 kg)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' High-energy naval shock test for lightweight equipment. Uses the Lightweight Shock Machine (LWSM). Representative SRS envelope of the machine output.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 500&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== MIL-S-901D — Grade B (mediumweight, 136–2 268 kg) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || MIL-S-901D (1989), Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || US Navy — medium-weight equipment (136–2 268 kg)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Naval shock using the floating barge platform. Lower levels than Grade A due to the larger test article mass and different test rig.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 250&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 1 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Aviation — RTCA DO-160G Section 7 ==&lt;br /&gt;
&lt;br /&gt;
DO-160G Section 7 defines '''time-domain shock pulses''', not SRS limits. All three curves are '''[approximate]''' envelopes computed from those pulses.&lt;br /&gt;
&lt;br /&gt;
=== DO-160G Sect.7 — Cat. B, Operational (6 g half-sine) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || RTCA DO-160G, Section 7, Category B&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 6 g / 11 ms half-sine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Aircraft operational shock — in-service turbulence, hard landings, taxiing. The least severe DO-160G shock category.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== DO-160G Sect.7 — Cat. C, Bench Handling (15 g half-sine) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || RTCA DO-160G, Section 7, Category C&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 15 g / 11 ms half-sine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Bench handling shock for avionics — drops, knocks during maintenance. Matches MIL-STD-810H Procedure VI levels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== DO-160G Sect.7 — Cat. D, Crash (20 g) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || RTCA DO-160G, Section 7, Category D&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || 20 g equivalent crash pulse&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Crash / emergency landing survivability requirement. Equipment must not create a hazard to occupants during a crash sequence.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 40&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 40&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 20&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== European Defence ==&lt;br /&gt;
&lt;br /&gt;
=== DEF STAN 00-35 Pt.3 — Category M (Mechanical) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || DEF STAN 00-35 Part 3 Issue 4, Category M&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || UK defence — general mechanical shock&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' UK Ministry of Defence standard for general mechanical shock environments. Levels depend on the platform category. Always verify against the Test Schedule (TS) applicable to the programme.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 25&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 250&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 1 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 1 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== DEF STAN 00-35 Pt.3 — Category P (Pyrotechnic) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || DEF STAN 00-35 Part 3 Issue 4, Category P&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || UK defence — aircraft store separation (pyrotechnic)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Pyrotechnic shock for aircraft-delivered stores (bombs, missiles). More severe than Category M. Verify against the applicable Test Schedule.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 1 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== GAM EG-13 — Choc sévère (pyrotechnique) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || DGA GAM EG-13 (2002), Tableau 3, Choc sévère&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || French DGA — severe pyrotechnic shock environment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' French DGA (Direction Générale de l'Armement) standard for severe shock, typically from pyrotechnic devices (ejection seats, weapon release). Verify exact levels in Table 3 of the applicable programme document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 40&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 200&lt;br /&gt;
|-&lt;br /&gt;
| 1 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== GAM EG-13 — Choc modéré (mécanique) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || DGA GAM EG-13 (2002), Tableau 3, Choc modéré&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || French DGA — moderate mechanical shock environment&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' French DGA standard for moderate mechanical shock (vehicle impacts, transport drops). Significantly lower levels than the pyrotechnic environment.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 20&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 1 000 || 500&lt;br /&gt;
|-&lt;br /&gt;
| 5 000 || 500&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== NATO — STANAG 4370 / AECTP 201 ==&lt;br /&gt;
&lt;br /&gt;
=== STANAG 4370 AECTP 201 — Meth.417 Pyroshock ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | [indicative]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || STANAG 4370 AECTP 201, Method 417 (Ed.3, 2009)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || NATO — pyroshock, severity level 3 (severe platform)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' NATO standardised pyroshock test method (SRS method). The curve shown is representative of severity level 3 (severe platform shock). Actual levels must be drawn from the applicable NATO programme documents.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 1 000 || 2 000&lt;br /&gt;
|-&lt;br /&gt;
| 10 000 || 2 000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== STANAG 4370 AECTP 201 — Meth.403 Mechanical Shock ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || STANAG 4370 AECTP 201, Method 403 (Ed.3, 2009)&lt;br /&gt;
|-&lt;br /&gt;
| '''Waveform''' || Half-sine pulse, severity level 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' NATO mechanical shock — Method 403 defines time-domain pulses (half-sine), not SRS directly. The curve shown is an SRS envelope computed from the severity level 3 half-sine waveform.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 500 || 25&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 25&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Industrial — IEC 60068-2-27 ==&lt;br /&gt;
&lt;br /&gt;
IEC 60068-2-27 (Test Ea) defines '''half-sine time-domain pulses''', not SRS limits. All curves are '''[approximate]'''.&lt;br /&gt;
&lt;br /&gt;
=== IEC 60068-2-27 — Test Ea, 15 g / 11 ms half-sine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 60068-2-27 Ed.3 (2008), Test Ea — 15 g / 11 ms&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || General industrial equipment — standard shock level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Standard environmental test shock (Test Ea). Widely used for industrial and commercial equipment qualification. 15 g / 11 ms half-sine is the most common combination.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 30&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== IEC 60068-2-27 — Test Ea, 50 g / 11 ms half-sine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 60068-2-27 Ed.3 (2008), Test Ea — 50 g / 11 ms (severe)&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Industrial equipment — severe shock level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Severe industrial shock. Used for rugged equipment or harsh installation environments.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 45 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== IEC 60068-2-27 — Test Ea, 100 g / 6 ms half-sine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 60068-2-27 Ed.3 (2008), Test Ea — 100 g / 6 ms&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Industrial equipment — harsh shock level&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Harsh shock level — short duration (6 ms) shifts the SRS peak to ~83 Hz. Used for equipment exposed to impacts, sudden accelerations, or harsh transport.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 200&lt;br /&gt;
|-&lt;br /&gt;
| 83 || 200&lt;br /&gt;
|-&lt;br /&gt;
| 500 || 100&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Railway — IEC 61373 ==&lt;br /&gt;
&lt;br /&gt;
IEC 61373 defines '''time-domain shock pulses''' for railway equipment. All curves are '''[approximate]'''.&lt;br /&gt;
&lt;br /&gt;
=== IEC 61373 Cat.1 Class B — Railway, Vehicle Body ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 61373 Ed.2 (2010), Category 1 Class B&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Equipment mounted on the vehicle body (interior)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Functional shock for body-mounted railway equipment. IEC 61373 defines a 3 g / 30 ms half-sine. The long duration (30 ms) places the SRS peak at only ~16 Hz — the lowest peak frequency of all curves in the library.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 3&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== IEC 61373 Cat.1 Class A — Railway, Bogie-Mounted ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 61373 Ed.2 (2010), Category 1 Class A&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Equipment mounted on the bogie (running gear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Bogie-mounted equipment is directly exposed to rail irregularities and rail joints. Significantly higher levels than Class B (vehicle body). IEC 61373 defines a time-domain pulse, not an SRS.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 15&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== IEC 61373 Cat.2 — Railway, Under-Body Mounted ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field !! Value&lt;br /&gt;
|-&lt;br /&gt;
| '''Tag''' || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | [approximate]&lt;br /&gt;
|-&lt;br /&gt;
| '''Reference''' || IEC 61373 Ed.2 (2010), Category 2&lt;br /&gt;
|-&lt;br /&gt;
| '''Application''' || Under-body mounted equipment, axle box area&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Most severe shock category in IEC 61373. Under-body equipment (including axle-box area) is exposed to the highest shock levels on a railway vehicle.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Frequency (Hz) !! Level (g)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 200 || 25&lt;br /&gt;
|-&lt;br /&gt;
| 2 000 || 25&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Summary table ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; font-size:90%;&amp;quot;&lt;br /&gt;
! Standard !! Sector !! Tag !! Peak level !! Freq. range&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 2500 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 2 500 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 1000 g || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| NASA GEVS 3750 g (Qual.) || Space || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 3 750 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 5 Equipment Bay || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| Ariane 6 || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 1 600 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| VEGA-C || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 1 200 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| ECSS-E-ST-10-03C Protoqual. || Space || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Near-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 10 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Mid-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 1 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M517 Far-field || Military / Pyro || style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | normative || 100 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Functional 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 80 g (2×A) || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Crash 40 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 60 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-STD-810H M516 Bench 15 g || Military / Mech || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade A || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| MIL-S-901D Grade B || Military / Naval || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 1 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. B 6 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 12 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. C 15 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DO-160G Cat. D 20 g || Aviation || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 40 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. M || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 1 000 g || 10–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| DEF STAN 00-35 Cat. P || European Defence || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc sévère || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 20–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| GAM EG-13 Choc modéré || European Defence (DGA) || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 500 g || 10–5 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M417 || NATO || style=&amp;quot;background:#fce4ec; color:#880e4f;&amp;quot; | indicative || 2 000 g || 100–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| STANAG 4370 AECTP-201 M403 || NATO || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 50 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 15 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 30 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 50 g / 11 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 100 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 60068-2-27 100 g / 6 ms || Industrial || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 200 g || 5–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class B || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 6 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.1 Class A || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 15 g || 2–2 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| IEC 61373 Cat.2 Under-body || Railway || style=&amp;quot;background:#fff3e0; color:#e65100;&amp;quot; | approximate || 50 g || 2–2 000 Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== How the SRS Tool uses these curves ==&lt;br /&gt;
&lt;br /&gt;
# Select a curve in the '''Pass/Fail''' tab.&lt;br /&gt;
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.&lt;br /&gt;
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)'''&lt;br /&gt;
** Positive margin → SRS is below the limit ('''PASS''' at that frequency)&lt;br /&gt;
** Negative margin → SRS exceeds the limit ('''FAIL''' at that frequency)&lt;br /&gt;
# The overall result is PASS only if the margin is positive at '''all''' frequencies.&lt;br /&gt;
&lt;br /&gt;
== Adding a custom curve ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Category:SRS Tool]]&lt;br /&gt;
[[Category:Test Standards]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12843</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12843"/>
		<updated>2026-04-20T09:01:33Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* NVGate connection indicator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12817</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12817"/>
		<updated>2026-04-17T14:28:17Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* What makes SRS Tool unique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12816</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12816"/>
		<updated>2026-04-17T14:27:23Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Signal and SRS plots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12815</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12815"/>
		<updated>2026-04-17T14:27:11Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Injecting results into NVGate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12814</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12814"/>
		<updated>2026-04-17T14:27:00Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* NVGate Integration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12813</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12813"/>
		<updated>2026-04-17T14:25:24Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* User Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12812</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12812"/>
		<updated>2026-04-17T14:24:53Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* What sets SRS Tool apart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What makes SRS Tool unique==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12811</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12811"/>
		<updated>2026-04-17T14:24:23Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* What sets SRS Tool apart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12810</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12810"/>
		<updated>2026-04-17T14:23:45Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12809</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12809"/>
		<updated>2026-04-17T14:12:30Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12808</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12808"/>
		<updated>2026-04-17T14:08:51Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Signal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Infobox ─────────────────────────────────────────────────────── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;float:right; margin:0 0 20px 28px; width:270px; border:1px solid #c8d8e8; border-collapse:collapse; background:#f5f9fc; font-size:12px; line-height:1.7;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;background:#1565C0; color:#ffffff; font-size:13px; font-weight:bold; padding:8px 12px; letter-spacing:0.5px; text-align:left;&amp;quot; | &amp;amp;nbsp;SRS Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:10px 14px;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555; white-space:nowrap; padding-right:8px;&amp;quot; | '''Developer'''&lt;br /&gt;
| OROS / Gemini&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Platform'''&lt;br /&gt;
| Windows 10 / 11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Language'''&lt;br /&gt;
| Python 3.9+&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''UI'''&lt;br /&gt;
| PySide2 · Qt 5.15&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Algorithm'''&lt;br /&gt;
| Smallwood 1981&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''File I/O'''&lt;br /&gt;
| .ors / .orm (NVGate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Standards'''&lt;br /&gt;
| 30+ built-in curves&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Licence'''&lt;br /&gt;
| Free / open-source&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12807</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12807"/>
		<updated>2026-04-17T14:05:55Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* User Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Infobox ─────────────────────────────────────────────────────── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;float:right; margin:0 0 20px 28px; width:270px; border:1px solid #c8d8e8; border-collapse:collapse; background:#f5f9fc; font-size:12px; line-height:1.7;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;background:#1565C0; color:#ffffff; font-size:13px; font-weight:bold; padding:8px 12px; letter-spacing:0.5px; text-align:left;&amp;quot; | &amp;amp;nbsp;SRS Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:10px 14px;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555; white-space:nowrap; padding-right:8px;&amp;quot; | '''Developer'''&lt;br /&gt;
| OROS / Gemini&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Platform'''&lt;br /&gt;
| Windows 10 / 11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Language'''&lt;br /&gt;
| Python 3.9+&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''UI'''&lt;br /&gt;
| PySide2 · Qt 5.15&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Algorithm'''&lt;br /&gt;
| Smallwood 1981&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''File I/O'''&lt;br /&gt;
| .ors / .orm (NVGate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Standards'''&lt;br /&gt;
| 30+ built-in curves&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Licence'''&lt;br /&gt;
| Free / open-source&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the Measurement subfolder — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12806</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12806"/>
		<updated>2026-04-17T14:05:37Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Infobox ─────────────────────────────────────────────────────── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;float:right; margin:0 0 20px 28px; width:270px; border:1px solid #c8d8e8; border-collapse:collapse; background:#f5f9fc; font-size:12px; line-height:1.7;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;background:#1565C0; color:#ffffff; font-size:13px; font-weight:bold; padding:8px 12px; letter-spacing:0.5px; text-align:left;&amp;quot; | &amp;amp;nbsp;SRS Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:10px 14px;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555; white-space:nowrap; padding-right:8px;&amp;quot; | '''Developer'''&lt;br /&gt;
| OROS / Gemini&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Platform'''&lt;br /&gt;
| Windows 10 / 11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Language'''&lt;br /&gt;
| Python 3.9+&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''UI'''&lt;br /&gt;
| PySide2 · Qt 5.15&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Algorithm'''&lt;br /&gt;
| Smallwood 1981&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''File I/O'''&lt;br /&gt;
| .ors / .orm (NVGate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Standards'''&lt;br /&gt;
| 30+ built-in curves&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Licence'''&lt;br /&gt;
| Free / open-source&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
The window is split into two zones:&lt;br /&gt;
&lt;br /&gt;
* '''Left panel''' (340 px fixed) — three tabs: [[#Main Tab|Main]], [[#Advanced Tab|Advanced]], [[#Pass / Fail Tab|Pass / Fail]]&lt;br /&gt;
* '''Right panel''' (expandable) — signal + SRS plots when on Main/Advanced; Pass/Fail chart when on Pass/Fail tab&lt;br /&gt;
&lt;br /&gt;
The '''status bar''' at the bottom tracks every operation. A '''progress bar''' appears during computation.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the Measurement subfolder — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12805</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12805"/>
		<updated>2026-04-17T14:05:06Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Full feature list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Infobox ─────────────────────────────────────────────────────── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;float:right; margin:0 0 20px 28px; width:270px; border:1px solid #c8d8e8; border-collapse:collapse; background:#f5f9fc; font-size:12px; line-height:1.7;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;background:#1565C0; color:#ffffff; font-size:13px; font-weight:bold; padding:8px 12px; letter-spacing:0.5px; text-align:left;&amp;quot; | &amp;amp;nbsp;SRS Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:10px 14px;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555; white-space:nowrap; padding-right:8px;&amp;quot; | '''Developer'''&lt;br /&gt;
| OROS / Gemini&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Platform'''&lt;br /&gt;
| Windows 10 / 11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Language'''&lt;br /&gt;
| Python 3.9+&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''UI'''&lt;br /&gt;
| PySide2 · Qt 5.15&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Algorithm'''&lt;br /&gt;
| Smallwood 1981&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''File I/O'''&lt;br /&gt;
| .ors / .orm (NVGate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Standards'''&lt;br /&gt;
| 30+ built-in curves&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Licence'''&lt;br /&gt;
| Free / open-source&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Component !! Minimum version !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Python || 3.9 || 3.12 not yet tested&lt;br /&gt;
|-&lt;br /&gt;
| PySide2 || 5.15 || Qt5 Python binding&lt;br /&gt;
|-&lt;br /&gt;
| NumPy || 1.22 || Vectorised SRS engine&lt;br /&gt;
|-&lt;br /&gt;
| Matplotlib || 3.5 || Embedded plot canvases&lt;br /&gt;
|-&lt;br /&gt;
| pywin32 || any || Windows only — for NVGate injection&lt;br /&gt;
|-&lt;br /&gt;
| pynvdrive || OROS Toolkit NVdrive || Required only for NVGate injection&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\OROS\Gemini\SRS&lt;br /&gt;
python -m src.main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
The window is split into two zones:&lt;br /&gt;
&lt;br /&gt;
* '''Left panel''' (340 px fixed) — three tabs: [[#Main Tab|Main]], [[#Advanced Tab|Advanced]], [[#Pass / Fail Tab|Pass / Fail]]&lt;br /&gt;
* '''Right panel''' (expandable) — signal + SRS plots when on Main/Advanced; Pass/Fail chart when on Pass/Fail tab&lt;br /&gt;
&lt;br /&gt;
The '''status bar''' at the bottom tracks every operation. A '''progress bar''' appears during computation.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the Measurement subfolder — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12804</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12804"/>
		<updated>2026-04-17T14:05:00Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* What sets SRS Tool apart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Infobox ─────────────────────────────────────────────────────── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;float:right; margin:0 0 20px 28px; width:270px; border:1px solid #c8d8e8; border-collapse:collapse; background:#f5f9fc; font-size:12px; line-height:1.7;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;background:#1565C0; color:#ffffff; font-size:13px; font-weight:bold; padding:8px 12px; letter-spacing:0.5px; text-align:left;&amp;quot; | &amp;amp;nbsp;SRS Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:10px 14px;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555; white-space:nowrap; padding-right:8px;&amp;quot; | '''Developer'''&lt;br /&gt;
| OROS / Gemini&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Platform'''&lt;br /&gt;
| Windows 10 / 11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Language'''&lt;br /&gt;
| Python 3.9+&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''UI'''&lt;br /&gt;
| PySide2 · Qt 5.15&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Algorithm'''&lt;br /&gt;
| Smallwood 1981&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''File I/O'''&lt;br /&gt;
| .ors / .orm (NVGate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Standards'''&lt;br /&gt;
| 30+ built-in curves&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Licence'''&lt;br /&gt;
| Free / open-source&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | OROS SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Component !! Minimum version !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Python || 3.9 || 3.12 not yet tested&lt;br /&gt;
|-&lt;br /&gt;
| PySide2 || 5.15 || Qt5 Python binding&lt;br /&gt;
|-&lt;br /&gt;
| NumPy || 1.22 || Vectorised SRS engine&lt;br /&gt;
|-&lt;br /&gt;
| Matplotlib || 3.5 || Embedded plot canvases&lt;br /&gt;
|-&lt;br /&gt;
| pywin32 || any || Windows only — for NVGate injection&lt;br /&gt;
|-&lt;br /&gt;
| pynvdrive || OROS Toolkit NVdrive || Required only for NVGate injection&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\OROS\Gemini\SRS&lt;br /&gt;
python -m src.main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
The window is split into two zones:&lt;br /&gt;
&lt;br /&gt;
* '''Left panel''' (340 px fixed) — three tabs: [[#Main Tab|Main]], [[#Advanced Tab|Advanced]], [[#Pass / Fail Tab|Pass / Fail]]&lt;br /&gt;
* '''Right panel''' (expandable) — signal + SRS plots when on Main/Advanced; Pass/Fail chart when on Pass/Fail tab&lt;br /&gt;
&lt;br /&gt;
The '''status bar''' at the bottom tracks every operation. A '''progress bar''' appears during computation.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the Measurement subfolder — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12803</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12803"/>
		<updated>2026-04-17T14:04:23Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* What sets SRS Tool apart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Infobox ─────────────────────────────────────────────────────── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;float:right; margin:0 0 20px 28px; width:270px; border:1px solid #c8d8e8; border-collapse:collapse; background:#f5f9fc; font-size:12px; line-height:1.7;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;background:#1565C0; color:#ffffff; font-size:13px; font-weight:bold; padding:8px 12px; letter-spacing:0.5px; text-align:left;&amp;quot; | &amp;amp;nbsp;SRS Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:10px 14px;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555; white-space:nowrap; padding-right:8px;&amp;quot; | '''Developer'''&lt;br /&gt;
| OROS / Gemini&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Platform'''&lt;br /&gt;
| Windows 10 / 11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Language'''&lt;br /&gt;
| Python 3.9+&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''UI'''&lt;br /&gt;
| PySide2 · Qt 5.15&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Algorithm'''&lt;br /&gt;
| Smallwood 1981&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''File I/O'''&lt;br /&gt;
| .ors / .orm (NVGate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Standards'''&lt;br /&gt;
| 30+ built-in curves&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Licence'''&lt;br /&gt;
| Free / open-source&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Component !! Minimum version !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Python || 3.9 || 3.12 not yet tested&lt;br /&gt;
|-&lt;br /&gt;
| PySide2 || 5.15 || Qt5 Python binding&lt;br /&gt;
|-&lt;br /&gt;
| NumPy || 1.22 || Vectorised SRS engine&lt;br /&gt;
|-&lt;br /&gt;
| Matplotlib || 3.5 || Embedded plot canvases&lt;br /&gt;
|-&lt;br /&gt;
| pywin32 || any || Windows only — for NVGate injection&lt;br /&gt;
|-&lt;br /&gt;
| pynvdrive || OROS Toolkit NVdrive || Required only for NVGate injection&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\OROS\Gemini\SRS&lt;br /&gt;
python -m src.main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
The window is split into two zones:&lt;br /&gt;
&lt;br /&gt;
* '''Left panel''' (340 px fixed) — three tabs: [[#Main Tab|Main]], [[#Advanced Tab|Advanced]], [[#Pass / Fail Tab|Pass / Fail]]&lt;br /&gt;
* '''Right panel''' (expandable) — signal + SRS plots when on Main/Advanced; Pass/Fail chart when on Pass/Fail tab&lt;br /&gt;
&lt;br /&gt;
The '''status bar''' at the bottom tracks every operation. A '''progress bar''' appears during computation.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the Measurement subfolder — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12802</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12802"/>
		<updated>2026-04-17T14:03:42Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Full feature list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Infobox ─────────────────────────────────────────────────────── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;float:right; margin:0 0 20px 28px; width:270px; border:1px solid #c8d8e8; border-collapse:collapse; background:#f5f9fc; font-size:12px; line-height:1.7;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;background:#1565C0; color:#ffffff; font-size:13px; font-weight:bold; padding:8px 12px; letter-spacing:0.5px; text-align:left;&amp;quot; | &amp;amp;nbsp;SRS Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:10px 14px;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555; white-space:nowrap; padding-right:8px;&amp;quot; | '''Developer'''&lt;br /&gt;
| OROS / Gemini&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Platform'''&lt;br /&gt;
| Windows 10 / 11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Language'''&lt;br /&gt;
| Python 3.9+&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''UI'''&lt;br /&gt;
| PySide2 · Qt 5.15&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Algorithm'''&lt;br /&gt;
| Smallwood 1981&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''File I/O'''&lt;br /&gt;
| .ors / .orm (NVGate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Standards'''&lt;br /&gt;
| 30+ built-in curves&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Licence'''&lt;br /&gt;
| Free / open-source&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''Direct NVGate signal read''' — no DLL, no NVGate open, no export step&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual export required&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| No dongle, no subscription, no cloud&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Free&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Licence required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate signal files directly &lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Component !! Minimum version !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Python || 3.9 || 3.12 not yet tested&lt;br /&gt;
|-&lt;br /&gt;
| PySide2 || 5.15 || Qt5 Python binding&lt;br /&gt;
|-&lt;br /&gt;
| NumPy || 1.22 || Vectorised SRS engine&lt;br /&gt;
|-&lt;br /&gt;
| Matplotlib || 3.5 || Embedded plot canvases&lt;br /&gt;
|-&lt;br /&gt;
| pywin32 || any || Windows only — for NVGate injection&lt;br /&gt;
|-&lt;br /&gt;
| pynvdrive || OROS Toolkit NVdrive || Required only for NVGate injection&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\OROS\Gemini\SRS&lt;br /&gt;
python -m src.main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
The window is split into two zones:&lt;br /&gt;
&lt;br /&gt;
* '''Left panel''' (340 px fixed) — three tabs: [[#Main Tab|Main]], [[#Advanced Tab|Advanced]], [[#Pass / Fail Tab|Pass / Fail]]&lt;br /&gt;
* '''Right panel''' (expandable) — signal + SRS plots when on Main/Advanced; Pass/Fail chart when on Pass/Fail tab&lt;br /&gt;
&lt;br /&gt;
The '''status bar''' at the bottom tracks every operation. A '''progress bar''' appears during computation.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the Measurement subfolder — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12801</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12801"/>
		<updated>2026-04-17T14:03:23Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* What sets SRS Tool apart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Infobox ─────────────────────────────────────────────────────── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;float:right; margin:0 0 20px 28px; width:270px; border:1px solid #c8d8e8; border-collapse:collapse; background:#f5f9fc; font-size:12px; line-height:1.7;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;background:#1565C0; color:#ffffff; font-size:13px; font-weight:bold; padding:8px 12px; letter-spacing:0.5px; text-align:left;&amp;quot; | &amp;amp;nbsp;SRS Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:10px 14px;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555; white-space:nowrap; padding-right:8px;&amp;quot; | '''Developer'''&lt;br /&gt;
| OROS / Gemini&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Platform'''&lt;br /&gt;
| Windows 10 / 11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Language'''&lt;br /&gt;
| Python 3.9+&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''UI'''&lt;br /&gt;
| PySide2 · Qt 5.15&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Algorithm'''&lt;br /&gt;
| Smallwood 1981&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''File I/O'''&lt;br /&gt;
| .ors / .orm (NVGate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Standards'''&lt;br /&gt;
| 30+ built-in curves&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Licence'''&lt;br /&gt;
| Free / open-source&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''Direct NVGate signal read''' — no DLL, no NVGate open, no export step&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual export required&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| No dongle, no subscription, no cloud&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Free&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Licence required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Full feature list ===&lt;br /&gt;
&lt;br /&gt;
* '''Signal acquisition:''' reads NVGate &amp;lt;code&amp;gt;.ors&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; files directly — no DLL, no NVGate open&lt;br /&gt;
* '''Multi-channel:''' up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
* '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
* '''Frequency axis:''' 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
* '''SRS types:''' Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
* '''Physical quantities:''' Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
* '''Shock zone:''' auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
* '''Residual SRS:''' computes SRS on the signal segment after the shock ends&lt;br /&gt;
* '''Multi-axis combination:''' SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
* '''Pass/Fail:''' 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
* '''CSV export:''' full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
* '''PNG export:''' Pass/Fail chart at 150 dpi&lt;br /&gt;
* '''NVGate injection:''' injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
* '''Preprocessing:''' DC offset removal, noise floor suppression&lt;br /&gt;
* '''Dark theme:''' optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Component !! Minimum version !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Python || 3.9 || 3.12 not yet tested&lt;br /&gt;
|-&lt;br /&gt;
| PySide2 || 5.15 || Qt5 Python binding&lt;br /&gt;
|-&lt;br /&gt;
| NumPy || 1.22 || Vectorised SRS engine&lt;br /&gt;
|-&lt;br /&gt;
| Matplotlib || 3.5 || Embedded plot canvases&lt;br /&gt;
|-&lt;br /&gt;
| pywin32 || any || Windows only — for NVGate injection&lt;br /&gt;
|-&lt;br /&gt;
| pynvdrive || OROS Toolkit NVdrive || Required only for NVGate injection&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\OROS\Gemini\SRS&lt;br /&gt;
python -m src.main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
The window is split into two zones:&lt;br /&gt;
&lt;br /&gt;
* '''Left panel''' (340 px fixed) — three tabs: [[#Main Tab|Main]], [[#Advanced Tab|Advanced]], [[#Pass / Fail Tab|Pass / Fail]]&lt;br /&gt;
* '''Right panel''' (expandable) — signal + SRS plots when on Main/Advanced; Pass/Fail chart when on Pass/Fail tab&lt;br /&gt;
&lt;br /&gt;
The '''status bar''' at the bottom tracks every operation. A '''progress bar''' appears during computation.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the Measurement subfolder — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12800</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12800"/>
		<updated>2026-04-17T14:03:02Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* What sets SRS Tool apart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Infobox ─────────────────────────────────────────────────────── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;float:right; margin:0 0 20px 28px; width:270px; border:1px solid #c8d8e8; border-collapse:collapse; background:#f5f9fc; font-size:12px; line-height:1.7;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;background:#1565C0; color:#ffffff; font-size:13px; font-weight:bold; padding:8px 12px; letter-spacing:0.5px; text-align:left;&amp;quot; | &amp;amp;nbsp;SRS Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:10px 14px;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555; white-space:nowrap; padding-right:8px;&amp;quot; | '''Developer'''&lt;br /&gt;
| OROS / Gemini&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Platform'''&lt;br /&gt;
| Windows 10 / 11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Language'''&lt;br /&gt;
| Python 3.9+&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''UI'''&lt;br /&gt;
| PySide2 · Qt 5.15&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Algorithm'''&lt;br /&gt;
| Smallwood 1981&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''File I/O'''&lt;br /&gt;
| .ors / .orm (NVGate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Standards'''&lt;br /&gt;
| 30+ built-in curves&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Licence'''&lt;br /&gt;
| Free / open-source&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''Direct NVGate signal read''' — no DLL, no NVGate open, no export step&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual export required&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| No dongle, no subscription, no cloud&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Free&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Licence required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Full feature list&lt;br /&gt;
Signal acquisition: reads NVGate .ors / .orm files directly — no DLL, no NVGate open&lt;br /&gt;
Multi-channel: up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)&lt;br /&gt;
Smallwood recursive filter: vectorised NumPy implementation; all frequencies computed in a single forward pass&lt;br /&gt;
Frequency axis: 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max&lt;br /&gt;
SRS types: Maximax (absolute maximum), Positive, Negative&lt;br /&gt;
Physical quantities: Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS&lt;br /&gt;
Shock zone: auto-detection + manual override (drag on plot or type Start/End in seconds)&lt;br /&gt;
Residual SRS: computes SRS on the signal segment after the shock ends&lt;br /&gt;
Multi-axis combination: SRSS and/or Worst-case Envelope across all loaded channels&lt;br /&gt;
Pass/Fail: 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case&lt;br /&gt;
CSV export: full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)&lt;br /&gt;
PNG export: Pass/Fail chart at 150 dpi&lt;br /&gt;
NVGate injection: injects all SRS curves into NVGate on log-log display, autoscaled&lt;br /&gt;
Preprocessing: DC offset removal, noise floor suppression&lt;br /&gt;
Dark theme: optimised for lab-room screen visibility&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Component !! Minimum version !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Python || 3.9 || 3.12 not yet tested&lt;br /&gt;
|-&lt;br /&gt;
| PySide2 || 5.15 || Qt5 Python binding&lt;br /&gt;
|-&lt;br /&gt;
| NumPy || 1.22 || Vectorised SRS engine&lt;br /&gt;
|-&lt;br /&gt;
| Matplotlib || 3.5 || Embedded plot canvases&lt;br /&gt;
|-&lt;br /&gt;
| pywin32 || any || Windows only — for NVGate injection&lt;br /&gt;
|-&lt;br /&gt;
| pynvdrive || OROS Toolkit NVdrive || Required only for NVGate injection&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\OROS\Gemini\SRS&lt;br /&gt;
python -m src.main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
The window is split into two zones:&lt;br /&gt;
&lt;br /&gt;
* '''Left panel''' (340 px fixed) — three tabs: [[#Main Tab|Main]], [[#Advanced Tab|Advanced]], [[#Pass / Fail Tab|Pass / Fail]]&lt;br /&gt;
* '''Right panel''' (expandable) — signal + SRS plots when on Main/Advanced; Pass/Fail chart when on Pass/Fail tab&lt;br /&gt;
&lt;br /&gt;
The '''status bar''' at the bottom tracks every operation. A '''progress bar''' appears during computation.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the Measurement subfolder — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12799</id>
		<title>SRS Tool — Shock Response Spectrum Analyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=SRS_Tool_%E2%80%94_Shock_Response_Spectrum_Analyser&amp;diff=12799"/>
		<updated>2026-04-17T14:02:24Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: /* Pass/Fail results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ── Infobox ─────────────────────────────────────────────────────── --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;float:right; margin:0 0 20px 28px; width:270px; border:1px solid #c8d8e8; border-collapse:collapse; background:#f5f9fc; font-size:12px; line-height:1.7;&amp;quot;&lt;br /&gt;
|+ style=&amp;quot;background:#1565C0; color:#ffffff; font-size:13px; font-weight:bold; padding:8px 12px; letter-spacing:0.5px; text-align:left;&amp;quot; | &amp;amp;nbsp;SRS Tool&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:10px 14px;&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555; white-space:nowrap; padding-right:8px;&amp;quot; | '''Developer'''&lt;br /&gt;
| OROS / Gemini&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Platform'''&lt;br /&gt;
| Windows 10 / 11&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Language'''&lt;br /&gt;
| Python 3.9+&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''UI'''&lt;br /&gt;
| PySide2 · Qt 5.15&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Algorithm'''&lt;br /&gt;
| Smallwood 1981&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''File I/O'''&lt;br /&gt;
| .ors / .orm (NVGate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Standards'''&lt;br /&gt;
| 30+ built-in curves&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;color:#555;&amp;quot; | '''Licence'''&lt;br /&gt;
| Free / open-source&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= SRS Tool — Shock Response Spectrum Analyser =&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== What sets SRS Tool apart ==&lt;br /&gt;
&lt;br /&gt;
Most SRS tools require manual import/export and ship with no built-in normative database.&lt;br /&gt;
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; font-size:12px; border-collapse:collapse;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:54%; background:#f0f4f8;&amp;quot; | Feature&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | SRS Tool&lt;br /&gt;
! style=&amp;quot;width:23%; background:#f0f4f8; text-align:center;&amp;quot; | Typical alternatives&lt;br /&gt;
|-&lt;br /&gt;
| '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual entry only&lt;br /&gt;
|-&lt;br /&gt;
| '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ One channel at a time&lt;br /&gt;
|-&lt;br /&gt;
| '''Direct NVGate signal read''' — no DLL, no NVGate open, no export step&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Manual export required&lt;br /&gt;
|-&lt;br /&gt;
| '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Native&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Not available&lt;br /&gt;
|-&lt;br /&gt;
| '''Automatic shock zone detection''' — envelope algorithm, runs on load&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Automatic&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Manual only&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary + Residual SRS''' in a single computation pass&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ One click&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200; text-align:center;&amp;quot; | ~ Two separate runs&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Paid add-on&lt;br /&gt;
|-&lt;br /&gt;
| '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Included&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Rarely available&lt;br /&gt;
|-&lt;br /&gt;
| No dongle, no subscription, no cloud&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;&amp;quot; | ✔ Free&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ Licence required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Start =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;&amp;quot;&amp;gt;⚡ Five steps from measurement folder to qualification verdict&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;&amp;quot;&amp;gt;&lt;br /&gt;
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder&lt;br /&gt;
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot)&lt;br /&gt;
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS'''&lt;br /&gt;
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail'''&lt;br /&gt;
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Component !! Minimum version !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Python || 3.9 || 3.12 not yet tested&lt;br /&gt;
|-&lt;br /&gt;
| PySide2 || 5.15 || Qt5 Python binding&lt;br /&gt;
|-&lt;br /&gt;
| NumPy || 1.22 || Vectorised SRS engine&lt;br /&gt;
|-&lt;br /&gt;
| Matplotlib || 3.5 || Embedded plot canvases&lt;br /&gt;
|-&lt;br /&gt;
| pywin32 || any || Windows only — for NVGate injection&lt;br /&gt;
|-&lt;br /&gt;
| pynvdrive || OROS Toolkit NVdrive || Required only for NVGate injection&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\OROS\Gemini\SRS&lt;br /&gt;
python -m src.main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #f59f00; background:#fffbf0; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''Note:''' NVGate does not need to be running to load signals or compute SRS. It is only required for '''Inject into NVGate'''.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= User Interface =&lt;br /&gt;
&lt;br /&gt;
The window is split into two zones:&lt;br /&gt;
&lt;br /&gt;
* '''Left panel''' (340 px fixed) — three tabs: [[#Main Tab|Main]], [[#Advanced Tab|Advanced]], [[#Pass / Fail Tab|Pass / Fail]]&lt;br /&gt;
* '''Right panel''' (expandable) — signal + SRS plots when on Main/Advanced; Pass/Fail chart when on Pass/Fail tab&lt;br /&gt;
&lt;br /&gt;
The '''status bar''' at the bottom tracks every operation. A '''progress bar''' appears during computation.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Main Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== NVGate connection indicator ==&lt;br /&gt;
&lt;br /&gt;
A coloured dot in the '''NVGate''' box shows connection status, polled every 3 seconds automatically:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; border-collapse:collapse; margin:6px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🟢 '''Connected''' || NVGate reachable. Injection available.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 8px;&amp;quot; | 🔴 '''Disconnected''' || NVGate not running. SRS computation still fully functional.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Signal ==&lt;br /&gt;
&lt;br /&gt;
Click '''Select signal folder…''' to open a folder browser (default root: &amp;lt;code&amp;gt;C:\OROS\NVGate data\Projects&amp;lt;/code&amp;gt;). Select the Measurement subfolder — channels are listed and the signal is plotted immediately.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
&lt;br /&gt;
One checkbox per recorded channel, showing label, sampling rate, duration and unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  ☑  x   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  y   (25 600 Hz   13.86 s   m/s²)&lt;br /&gt;
  ☑  z   (25 600 Hz   13.86 s   m/s²)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel labels (x, y, z…) come from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field set by the operator in NVGate at recording time.&lt;br /&gt;
Uncheck a channel to exclude it. '''↺ Reload channels''' re-reads files from disk after a new recording.&lt;br /&gt;
&lt;br /&gt;
== Calculation parameters ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Description !! Recommended default&lt;br /&gt;
|-&lt;br /&gt;
| '''Frequency range''' || f_min to f_max of the SRS output || 1 Hz → 10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| '''Q / Damping''' || Q factor or damping ratio ζ (linked: Q = 1/2ζ) || Q = 10  (ζ = 5 %)&lt;br /&gt;
|-&lt;br /&gt;
| '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
&lt;br /&gt;
; Type&lt;br /&gt;
: '''Acc''' — Acceleration SRS. Always available. &amp;amp;nbsp; '''Vel''' — Pseudo-velocity SRS. &amp;amp;nbsp; '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)&lt;br /&gt;
&lt;br /&gt;
; Curve&lt;br /&gt;
: '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. &amp;amp;nbsp; '''Positive''' — max tensile response. &amp;amp;nbsp; '''Negative''' — max compressive response.&lt;br /&gt;
&lt;br /&gt;
== Signal and SRS plots ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Advanced Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
== Shock Zone ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auto-detection ===&lt;br /&gt;
&lt;br /&gt;
The detection algorithm:&lt;br /&gt;
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window&lt;br /&gt;
# Trigger threshold = ''Threshold %'' × peak envelope&lt;br /&gt;
# Zone = first to last sample above threshold&lt;br /&gt;
# Expand by ''Padding ms'' on each side, clamped to signal bounds&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Parameter !! Effect !! Default&lt;br /&gt;
|-&lt;br /&gt;
| '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 %&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;br /&gt;
&lt;br /&gt;
=== Manual override ===&lt;br /&gt;
&lt;br /&gt;
Type '''Start''' and '''End''' (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately.&lt;br /&gt;
Dragging on the signal plot synchronises the spinboxes in return.&lt;br /&gt;
&lt;br /&gt;
=== Residual SRS ===&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;(residual)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Advanced Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Effect !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the whole signal || Sensor bias, thermal drift&lt;br /&gt;
|-&lt;br /&gt;
| '''Noise floor''' (N ms) || Zeroes the first N ms || Pre-trigger noise before impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis Combination ==&lt;br /&gt;
&lt;br /&gt;
Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Option !! Formula !! Display&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' — Square Root Sum of Squares || √(SRS_x² + SRS_y² + SRS_z²) || White dashed curve, Maximax only&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SRS_x, SRS_y, SRS_z) at each frequency || Orange dash-dot curve, all types&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Pass / Fail Tab =&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.&lt;br /&gt;
&lt;br /&gt;
== Built-in limit curve library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;&amp;quot;&amp;gt;&lt;br /&gt;
'''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.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Standard !! Curves included&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-STD-810H — Method 517''' || Near-field (&amp;lt; 0.3 m), '''Mid-field ★''' (0.5–1.5 m), Far-field (&amp;gt; 1.5 m), Gunfire, Tall vehicles&lt;br /&gt;
|-&lt;br /&gt;
| '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment &amp;amp; system level)&lt;br /&gt;
|-&lt;br /&gt;
| '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far&lt;br /&gt;
|-&lt;br /&gt;
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal&lt;br /&gt;
|-&lt;br /&gt;
| '''MIL-S-901D''' || High-impact shock Grade A / Grade B&lt;br /&gt;
|-&lt;br /&gt;
| '''IEST-RP-DTE032''' || Light / medium / heavy equipment&lt;br /&gt;
|-&lt;br /&gt;
| '''RTCA DO-160G''' || Avionics Cat. A / B / C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
★ MIL-STD-810H Mid-field is the default — the most common qualification specification.&lt;br /&gt;
&lt;br /&gt;
=== User-defined CSV ===&lt;br /&gt;
&lt;br /&gt;
Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;10, 5 &amp;amp;nbsp; &amp;amp;nbsp; 100, 50 &amp;amp;nbsp; &amp;amp;nbsp; 2000, 50 &amp;amp;nbsp; &amp;amp;nbsp; 10000, 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scale factor (dB) ===&lt;br /&gt;
&lt;br /&gt;
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! dB || Multiplier || Typical use&lt;br /&gt;
|-&lt;br /&gt;
| +6 || ×2.00 || Conservative / tighter requirement&lt;br /&gt;
|-&lt;br /&gt;
| +3 || ×1.41 || Standard qualification margin check&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ×1.00 || Nominal — no change&lt;br /&gt;
|-&lt;br /&gt;
| −6 || ×0.50 || Relaxed limit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pass/Fail results ==&lt;br /&gt;
&lt;br /&gt;
[[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.]]&lt;br /&gt;
&lt;br /&gt;
=== Top panel — SRS vs Limit ===&lt;br /&gt;
&lt;br /&gt;
Each channel plotted in a distinct colour. Limit curve: red dashed. '''Red fill''' = exceedance (SRS &amp;gt; limit). '''Orange fill''' = caution zone (0 ≤ margin &amp;lt; 3 dB).&lt;br /&gt;
&lt;br /&gt;
=== Bottom panel — Margin (dB) ===&lt;br /&gt;
&lt;br /&gt;
Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Colour !! Condition !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#e8f5e9; color:#1b5e20;&amp;quot; | Green || M ≥ 3 dB || Well within specification&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff8e1; color:#7a5200;&amp;quot; | Orange || 0 ≤ M &amp;lt; 3 dB || Caution — low margin&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffebee; color:#b71c1c;&amp;quot; | Red || M &amp;lt; 0 dB || '''FAIL''' — exceedance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interactive cursor ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Verdict text ===&lt;br /&gt;
&lt;br /&gt;
The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;PASS   —   Maximax SRS&lt;br /&gt;
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)&lt;br /&gt;
&lt;br /&gt;
Per-channel result:&lt;br /&gt;
  PASS  x     min +42.1 dB @ 500 Hz&lt;br /&gt;
  PASS  y     min +38.7 dB @ 342 Hz&lt;br /&gt;
  PASS  z     min +45.3 dB @ 1000 Hz&lt;br /&gt;
&lt;br /&gt;
Worst margin (all channels): +38.7 dB  @  342.0 Hz&lt;br /&gt;
No exceedance detected over the computed frequency range.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Export ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Button !! Output !! Content&lt;br /&gt;
|-&lt;br /&gt;
| '''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.&lt;br /&gt;
|-&lt;br /&gt;
| '''Export graph PNG…''' || .png / .pdf || Both panels at 150 dpi.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= NVGate Integration =&lt;br /&gt;
&lt;br /&gt;
== Reading signal files ==&lt;br /&gt;
&lt;br /&gt;
SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Measurement8/&lt;br /&gt;
  Record_1_1/&lt;br /&gt;
    Channel_1_0_XXXXXXXX/&lt;br /&gt;
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name&lt;br /&gt;
      Part_0.ors       ← binary: float32 little-endian, SI units&lt;br /&gt;
    Channel_2_0_XXXXXXXX/  …&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Channel label comes from the &amp;lt;code&amp;gt;Name&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;.orm&amp;lt;/code&amp;gt; (set in NVGate at recording time). Falls back to &amp;lt;code&amp;gt;SourceName&amp;lt;/code&amp;gt; (&amp;quot;Input 1&amp;quot;, &amp;quot;Input 2&amp;quot;…) if empty.&lt;br /&gt;
&lt;br /&gt;
== Injecting results into NVGate ==&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* All SRS curves → separate TCP result channels&lt;br /&gt;
* X and Y axes: log scale (set automatically)&lt;br /&gt;
* Y axis: autoscaled&lt;br /&gt;
* All curves displayed in window '''SRS_Results''' of '''Layout1'''&lt;br /&gt;
&lt;br /&gt;
NVGate channel naming convention:&lt;br /&gt;
&amp;lt;pre&amp;gt;SRS Acc Shock AbsMax: x&lt;br /&gt;
SRS Acc Shock AbsMax: y&lt;br /&gt;
SRS Acc Shock AbsMax: z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Calculation Reference =&lt;br /&gt;
&lt;br /&gt;
== Shock Response Spectrum ==&lt;br /&gt;
&lt;br /&gt;
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):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Curve !! Definition !! Standard?&lt;br /&gt;
|-&lt;br /&gt;
| Positive SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ ωₙ² z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| Negative SRS || max&amp;lt;sub&amp;gt;t&amp;lt;/sub&amp;gt;[ −ωₙ²z(t) ] || Supplementary&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax SRS''' || max(Positive, Negative) || '''Required by most norms'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Smallwood Recursive Filter ==&lt;br /&gt;
&lt;br /&gt;
The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | E = exp(−ζωₙΔt) &amp;amp;nbsp;&amp;amp;nbsp; K = ωd·Δt &amp;amp;nbsp;&amp;amp;nbsp; (ωd = ωₙ√(1−ζ²))&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | b₀ = 1 − E·sin(K)/K &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₁ = 2(E·sin(K)/K − E·cos(K)) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b₂ = E² − E·sin(K)/K&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px;&amp;quot; | a₁ = 2E·cos(K) &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; a₂ = −E²&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:2px 10px; font-weight:bold;&amp;quot; | y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Frequency axis ==&lt;br /&gt;
&lt;br /&gt;
Log-spaced at 1/n octave: '''f_k = f_min × 2^(k/n)'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Resolution !! Bands 1–10 000 Hz&lt;br /&gt;
|-&lt;br /&gt;
| 1/3 octave || 40&lt;br /&gt;
|-&lt;br /&gt;
| 1/6 octave || 80&lt;br /&gt;
|-&lt;br /&gt;
| '''1/12 octave''' (default) || '''160'''&lt;br /&gt;
|-&lt;br /&gt;
| 1/24 octave || 320&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Q factor and damping ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Q = 1/(2ζ)   ↔   ζ = 1/(2Q)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Q !! ζ !! Use&lt;br /&gt;
|-&lt;br /&gt;
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA'''&lt;br /&gt;
|-&lt;br /&gt;
| 50 || 1 % || Lightly damped structures&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 10 % || Rubber-mounted, heavily damped&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Primary and Residual SRS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Zone !! Signal segment !! Required by&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary''' || [t_start → t_end] — the shock transient || All norms&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual''' || [t_end → end] — free vibration decay || MIL-STD-810H §517, ECSS §8.4.3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pseudo-velocity and pseudo-displacement ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; font-family:monospace;&amp;quot;&lt;br /&gt;
! Quantity !! Formula !! Unit (SA in m/s²)&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-velocity || SV(fn) = SA(fn) / (2π·fn) || m/s&lt;br /&gt;
|-&lt;br /&gt;
| Pseudo-displacement || SD(fn) = SA(fn) / (2π·fn)² || m&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Multi-axis combination ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px;&amp;quot;&lt;br /&gt;
! Method !! Formula !! Applied to !! Use case&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || √(SA_x² + SA_y² + SA_z²) || Maximax only || Euclidean resultant, triaxial sensor&lt;br /&gt;
|-&lt;br /&gt;
| '''Worst-case Envelope''' || max(SA_x, SA_y, SA_z) at each f || All types || Space programmes (ECSS App. H)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Supported Input Units =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! Unit !! Physical quantity !! Vel/Disp SRS available&lt;br /&gt;
|-&lt;br /&gt;
| '''m/s², g''' || Acceleration || style=&amp;quot;background:#e8f5e9; color:#1b5e20; text-align:center;&amp;quot; | ✔ Yes&lt;br /&gt;
|-&lt;br /&gt;
| m/s, mm/s || Velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| m, mm, µm || Displacement || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| N, kN || Force || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| V, mV || Voltage || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| Pa, N/m² || Pressure || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|-&lt;br /&gt;
| rad/s, RPM || Angular velocity || style=&amp;quot;background:#ffebee; color:#b71c1c; text-align:center;&amp;quot; | ✘ No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Glossary =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;font-size:12px; width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%;&amp;quot; | Term !! Definition&lt;br /&gt;
|-&lt;br /&gt;
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Maximax''' || max(Positive, |Negative|). The absolute peak response — required by most norms.&lt;br /&gt;
|-&lt;br /&gt;
| '''SDOF''' || Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Q factor''' || Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.&lt;br /&gt;
|-&lt;br /&gt;
| '''ζ''' || Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.&lt;br /&gt;
|-&lt;br /&gt;
| '''Primary SRS''' || SRS over the shock transient [t_start, t_end].&lt;br /&gt;
|-&lt;br /&gt;
| '''Residual SRS''' || SRS on the post-shock free vibration [t_end, end].&lt;br /&gt;
|-&lt;br /&gt;
| '''SRSS''' || Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).&lt;br /&gt;
|-&lt;br /&gt;
| '''Envelope''' || Point-by-point max across channels at each frequency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Margin (dB)''' || 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.&lt;br /&gt;
|-&lt;br /&gt;
| '''Padding''' || Symmetric time margin added around the auto-detected shock zone.&lt;br /&gt;
|-&lt;br /&gt;
| '''Pyroshock''' || Shock from explosive devices: separation bolts, pyrocutters, pin pullers.&lt;br /&gt;
|-&lt;br /&gt;
| '''.orm''' || NVGate JSON channel metadata: sampling rate, unit, name.&lt;br /&gt;
|-&lt;br /&gt;
| '''.ors''' || NVGate binary signal: float32 little-endian samples, SI units.&lt;br /&gt;
|-&lt;br /&gt;
| '''NVDrive''' || OROS TCP protocol for programmatic communication with NVGate.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
Algorithm: D.O. Smallwood, ''An Improved Recursive Formula for Calculating Shock Response Spectra'', Shock and Vibration Bulletin, 1981. &amp;amp;nbsp;·&amp;amp;nbsp;&lt;br /&gt;
Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:11_main_full.png&amp;diff=12798</id>
		<title>File:11 main full.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:11_main_full.png&amp;diff=12798"/>
		<updated>2026-04-17T14:00:35Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:10_srs_multiaxis.png&amp;diff=12797</id>
		<title>File:10 srs multiaxis.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:10_srs_multiaxis.png&amp;diff=12797"/>
		<updated>2026-04-17T14:00:35Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:10_srs_full_multiaxis.png&amp;diff=12796</id>
		<title>File:10 srs full multiaxis.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:10_srs_full_multiaxis.png&amp;diff=12796"/>
		<updated>2026-04-17T14:00:35Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:Chk_result.png&amp;diff=12795</id>
		<title>File:Chk result.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:Chk_result.png&amp;diff=12795"/>
		<updated>2026-04-17T14:00:34Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:Adv_srss_checked.png&amp;diff=12794</id>
		<title>File:Adv srss checked.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:Adv_srss_checked.png&amp;diff=12794"/>
		<updated>2026-04-17T14:00:34Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:Adv_scrolled.png&amp;diff=12793</id>
		<title>File:Adv scrolled.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:Adv_scrolled.png&amp;diff=12793"/>
		<updated>2026-04-17T14:00:33Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:Adv_current.png&amp;diff=12792</id>
		<title>File:Adv current.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:Adv_current.png&amp;diff=12792"/>
		<updated>2026-04-17T14:00:33Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
	<entry>
		<id>https://wiki.oros.com/index.php?title=File:Adv_checked.png&amp;diff=12791</id>
		<title>File:Adv checked.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.oros.com/index.php?title=File:Adv_checked.png&amp;diff=12791"/>
		<updated>2026-04-17T14:00:33Z</updated>

		<summary type="html">&lt;p&gt;Lmagimel: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Lmagimel</name></author>
	</entry>
</feed>