VNA-Exporte in DAT konvertieren¶
mpylab-vna2dat konvertiert CSV- und Touchstone-Exporte in DAT-Dateien.
Frequenzpunkte bleiben erhalten. Die Ausgabe enthält FUNIT: Hz,
UNIT: dB und drei polare Werte pro Punkt. Das Werkzeug interpoliert nicht
und greift nicht auf Geräte zu.
mpylab-vna2dat exports/ --output-dir dat/ --dry-run
mpylab-vna2dat exports/ --output-dir dat/
mpylab-vna2dat cable.s2p --parameter S21 --magnitude-error-db 0.2 --phase-error-deg 1
mpylab-vna2dat cable.s2p --parameter all
CSV mit einem Trace behält den Basisnamen; bei mehreren Traces und bei
Touchstone wird der Parameter angehängt, beispielsweise cable_S21.dat.
Vorhandene Dateien erfordern --overwrite; symbolische Links als Ziel werden
abgelehnt. Jede Datei wird atomar geschrieben. Fehler stoppen unabhängige
Dateien nicht. Exitcode 0 bedeutet Erfolg, 1 mindestens einen Konvertierungs-
oder Dateifehler und 2 ungültige CLI-Syntax. Die Zusammenfassung zählt Ausgaben
und Fehler, nicht notwendigerweise Quelldateien.
--recursive durchsucht Unterverzeichnisse. Ein explizites Zielverzeichnis
ist flach; bei Namenskollisionen wird keine der kollidierenden Dateien
gewählt. --dry-run validiert Inhalt und Namen ohne Dateien oder Verzeichnisse
anzulegen. Spätere Schreibrechte werden dadurch nicht garantiert.
CSV-Eingabe¶
Ein unterstützter Header lautet:
freq[Hz],db:Trc1_S21,ang:Trc1_S21,
Trace-Präfix und S-Parameter ordnen dB und Phase einander zu. Mehrere Traces
erfordern --parameter Sij oder --parameter all. Kommentare mit #
oder !, Leerzeilen, UTF-8-BOM, CRLF und abschließende Trennzeichen sind
erlaubt. Frequenzeinheiten: Hz, kHz, MHz und GHz; Phasen immer in Grad.
Komma, Semikolon und Tabulator werden automatisch erkannt.
Dezimaltrennzeichen ist der Punkt. Explizite Auswahl für Semikolon: --delimiter ';'.
Für andere Exporte lassen sich drei Spalten (ab 1 gezählt) und die
Frequenzeinheit explizit angeben:
mpylab-vna2dat export.csv --columns 1,2,3 --frequency-unit MHz --skip-rows 3
Explizite Spalten wählen einen dB/Grad-Trace; --parameter benennt ihn
optional. Die Headererkennung entfällt dann. Ungültige ausgewählte Werte,
nichtendliche Zahlen, negative, doppelte oder absteigende Frequenzen sind
Fehler. Es wird weder sortiert noch über Duplikate gemittelt.
Touchstone-Eingabe¶
Unterstützt werden S-Parameter mit einem oder zwei Ports, .s1p/.s2p,
RI-, MA- und DB-Darstellung sowie Standardwerte der Optionszeile. Eine begrenzte
Touchstone-2.0-Untermenge unterstützt außerdem .ts, vollständige Single-Ended-
Matrizen, beide Zweitor-Reihenfolgen und positive Bezugswiderstände je Port.
Pflichtschlüssel und Frequenzanzahl werden geprüft. Ein Port wählt standardmäßig
S11; zwei Ports erfordern eine Auswahl. Es findet keine Renormierung statt.
Bezugswiderstände bleiben als Kommentare erhalten. DAT-Verbraucher erzwingen
diese Kommentare nicht; das Bezugssystem muss zur Anwendung passen.
Unbekannte Schlüssel, Mixed-Mode-Daten, Rauschdaten, Dreiecksmatrizen, mehr als zwei Ports und umgebrochene Ein-/Zweitor-Datensätze werden abgelehnt. Nullbeträge sind nicht als endliche dB-Werte darstellbar und werden nicht durch eine willkürliche Untergrenze ersetzt. Über- oder Unterlauf bei der Linearisierung führt ebenfalls zum Fehler.
Grundlage ist die IBIS-Touchstone-2.0-Spezifikation, insbesondere Option Line, Two-Port Data Order, Reference und Single-Ended Network Parameter Data. Die genannte Untermenge ist keine vollständige Touchstone-2.0-Unterstützung.
Sweep und Unsicherheit¶
Konstante Frequenzdifferenzen kennzeichnen lineare, konstante Differenzen der
logarithmierten Frequenzen logarithmische Raster. --sweep-rtol setzt die
relative Abstandstoleranz (Standard 1e-5). Weniger als drei Punkte oder Raster,
die beide Prüfungen erfüllen, sind mehrdeutig. Andere Raster sind unregelmäßig
und bleiben erhalten. Klassifikation und gegebenenfalls eine INI-Empfehlung
für die Frequenzinterpolation werden kommentiert. Dies konfiguriert keinen
Kanal automatisch: Das Raster allein bestimmt nicht das physikalisch beste
Interpolationsmodell. Eine Nullfrequenz schließt logarithmische Erkennung aus.
Standard sind 0,2 dB Betragshalbspanne und 1 Grad Phasenunsicherheit. Beide Werte sind einstellbar, endlich und nichtnegativ; die Phasenunsicherheit muss kleiner als 180 Grad sein. DAT interpretiert die halbe linearisierte Betragsspanne als Standardunsicherheit. Herstellertoleranzen und erweiterte Unsicherheiten werden nicht automatisch umgerechnet. Betrag und Phase sind unabhängig; Korrelationen zwischen Frequenzen oder Traces werden nicht angenommen. Betragsunsicherheit null ist erlaubt: Bei drei gleichen Beträgen behält der mittlere angegebene Wert die Nominalphase. Phasengrenzen dürfen +/-180 Grad überschreiten.
Formatvereinbarung für polare dB-Daten¶
Für Betrag d in dB und Übertragungsphase phi speichert der bestehende
DAT-Leser 10**(d/10) * exp(1j*phi) als POWERRATIO. Dies ist eine
leistungsbezogene Übertragungsdarstellung, keine komplexe physikalische
Leistung. Zur Gewinnung des S-Parameters wird nur der Betrag gewurzelt;
die Phase bleibt erhalten. [-3, 60] ergibt damit ungefähr
0.707946 * exp(1j*pi/3) in AMPLITUDERATIO und keine Phase von 30 Grad.
mpylab.tools.ratio_conversion.convert_transfer_ratio() konvertiert in
beide Richtungen und erhält die SCUQ-Unsicherheitsabhängigkeiten. MGraph nutzt
diese Umrechnung jetzt für leistungsbezogene DAT-Werte zum Amplitudenverhältnis;
ältere Versionen halbierten dabei fälschlich die Phase. Bestehende skalare
Leistungskorrekturen bleiben unverändert. Die MGraph-Umrechnung von Amplitude
zur physikalischen Leistung verwendet weiterhin abs(S)**2 und verwirft
die Phase bewusst. Bloßes Umetikettieren der Einheit oder eine komplexe Wurzel
ersetzen die explizite Umrechnung nicht. DAT-Grammatik und bisher gespeicherte
Einheiten ändern sich nicht.