TEM-Emissionsdaten¶
TEMCell.Measure_Emission speichert korrigierte Empfängerspannungen für
Rauschmessung, EUT-Orientierungen und gegebenenfalls Detektor-Nachmessungen.
Die Auswertung erfolgt stufenweise durch Calculate_Prad,
Calculate_Emax und optional Calculate_EmissionLimitComparison:
raw = history.rawData_Emission[description]
result = history.processedData_Emission[description]
Rohdaten¶
Die kanonischen Messwertpfade sind:
raw["voltage"][detector][frequency][port][position][sample]
raw["noise"][detector][frequency][port][0][sample]
Detektoren werden normalisiert, typischerweise auf "PK", "QP" oder
"AV". frequency ist ein numerischer Frequenzwert in Hz; port und
sample sind ganzzahlige Indizes. Beim Rauschen steht der
Positionsschlüssel 0 für eine positionsunabhängige Messung. Ältere
Historien ohne Detektorebene
(voltage[frequency][port][position]) werden weiterhin gelesen und dem
Fallback-Detektor zugeordnet.
Ein Messwerteintrag enthält value, pfwd, pbwd, detector,
receiver und acquisition_source. value ist die bereits um die
Pfadkorrektur bereinigte Spannungs-Quantity. Die beiden Leistungsschlüssel
sind bei diesem Empfängerablauf normalerweise None und werden nur aus
Kompatibilitätsgründen mit der gemeinsamen Eintragsstruktur geführt.
Key |
Bedeutung |
|---|---|
|
GTEM-Geometrie und optionale EUT-Koordinaten. |
|
Detektor des schnellen Ausgangsscans. |
|
|
|
Frequenz-, Port- und positionsbezogene Vorbewertung. |
|
Sortierte Frequenzen, für die eine Nachmessung erforderlich ist. |
|
|
|
Bei der Vorbewertung verwendete Feldfaktor-Herkunft. |
|
Persistierte Messgraphbeschreibung, nicht eine offene Geräteverbindung. |
Prescreen[frequency][port][position] enthält field_limit,
voltage_limit, measured_peak_voltage, margin_db,
remeasure_required, prescreen_margin_db,
position_count_assumption, prescan_detector, remeasure_detector,
e0y_source_family und e0y_source_name.
Struktur der Auswertung¶
Die Auswertung ergänzt einen gemeinsamen Datensatz; welche Keys vorhanden
sind, hängt von den ausgeführten Stufen ab. Evaluate_Emission führt
Calculate_Prad und Calculate_Emax aus und ergänzt bei gesetztem Limit
auch den Vergleich.
Nach Calculate_Prad sind vorhanden:
Prad,Prad_noise[frequency][port][result_index]enthält eine Leistungs-Quantity in W.detector_used[frequency][port][position]nennt den für die jeweilige Spannung verwendeten Detektor.correlation_positions[frequency][port][result_index]ist das Tupel der drei orthogonalen EUT-Orientierungen, die in die Korrelation eingingen.correlation_detectorsGleicher Index; Liste der tatsächlich verwendeten Detektoren.
e0y_sourceHerkunft der Feldfaktoren einschließlich
family,nameundcomponent. Je nach Auswahl enthält sie weitere Geometrie-, Positions- oder Verifikationsmetadaten.
Nach Calculate_Emax kommen Emax und Emax_noise hinzu. Ihr Pfad ist
[frequency][port][result_index]; der Eintrag besitzt h, v und
total als Feldstärke-Quantities. total ist das größere der beiden
polarisierten Ergebnisse. Die Annahmen werden explizit unter
Assumed_Distance, Gmax_Model, Assumed_hg, Assumed_RH,
Assumed_Zc und Assumed_Directivity[frequency] gespeichert.
Detektor- und Grenzwertbewertung¶
Ein ausgeführtes Prescreening kann auch in der Auswertung Prescreen,
RemeasureRequiredFrequencies, EmissionLimit und
prescreen_e0y_source erzeugen. Die rohe Vorbewertung ist jedoch für den
tatsächlichen Messablauf und die Nachmessungsentscheidung maßgeblich.
LimitComparison[frequency][port][result_index] besitzt Emax,
limit, margin_db, passed, detector_required,
detector_used und detector_fallback. passed ist None, wenn an
der Frequenz kein gültiger Grenzwert vorliegt. detector_fallback == True
kennzeichnet, dass mindestens ein erforderlicher Enddetektor fehlte. Diese
Information darf bei der Interpretation eines scheinbar bestandenen
Grenzwertvergleichs nicht ignoriert werden.
Fehlende oder ungeklärte Grenzwertvarianten behalten die bestehende Bedeutung
passed=None, limit=None und margin_db=None. Der globale Profilstatus unterscheidet sich von den optionalen
frequenzbezogenen Bewertungsfeldern. Siehe
Referenzmatrix der EN/IEC-Grenzwerte.
Neue LimitComparison-Einträge enthalten zusätzlich optional limit_status
(str: applicable/exempt/unresolved/out_of_range) und limit_reason (str).
Ausgenommene und ungeklärte Fälle behalten limit=None, margin_db=None
und passed=None. Alte Historien ohne die Felder bleiben lesbar; fehlender
Status bedeutet unbekannt und wird nicht als Ausnahme interpretiert. Bestehende
Schlüssel, Indizes, Zahlenwerte und Einheiten behalten ihre Bedeutung.
EmissionLimit kann das optionale Attribut operating_frequency aus der
Referenzmatrix enthalten. Prescreen-Einträge behalten ihre bisherige Struktur.
Resolver-created EmissionLimit objects may additionally contain
profile_id (string): the registered model identity, independent of its
selection parameters. It is optional for direct construction and old pickles.
A detector mismatch no longer produces passed=True: below-limit results
with detector_fallback=True have passed=None; the numerical margin
remains available. This does not change existing result keys or units.
Aufbewahrte Orientierungssweeps¶
Das Skript tem-emission.py arbeitet standardmäßig interaktiv. Nach jedem
vollständigen Orientierungssweep zeigt es korrigierte Spannungen in dBµV,
die Spannungs-Screeninggrenze und die Schwelle
Grenzwert - prescreen_margin_db. Verfügbare Rauschdaten werden ergänzt.
Dies sind Screeningkurven einer einzelnen Orientierung, keine abschließende
Bewertung der abgestrahlten Feldstärke; fehlende Grenzwertabschnitte bleiben
unbewertet. Der Anwender kann die Orientierung wiederholen, fortfahren oder
vorzeitig beenden. Variante und Notizen beschreiben den EUT-Zustand während
des angezeigten Sweeps. Nach Wahl der Wiederholung wird der nächste
EUT-Zustand vor dem erneuten Start vorbereitet.
Für unbeaufsichtigte Abläufe gilt oben in der Konfiguration
cdict["interactive_sweeps"] = False; ein Eintrag in den jeweiligen
measure_parameters kann dies überschreiben. Direkte Aufrufe von
TEMCell.Measure_Emission behalten den Standard
interactive_sweeps=False. sweep_variant (Standard "default") und
sweep_notes (Standard leerer String) initialisieren die Beschriftung.
Die Prüfung verwendet Qt oder ein Terminal mit PNGs. Live-Darstellung während der
Aufnahme und auswählbare Überlagerungen älterer Kurven sind noch nicht umgesetzt.
Interaktive Historien ergänzen folgende optionale Rohdatenschlüssel.
Ältere Historien ohne diese Felder bleiben lesbar; Einheiten und bestehende
Indexhierarchien von Spannung/Rauschen bleiben erhalten. Das Arbeitsdictionary
voltage enthält den jeweils neuesten Sweep pro Orientierung. Für
Wiederholungen sind die aufbewahrten Snapshots zu verwenden, nicht gleiche
Listenindizes über mehrere Orientierungen:
raw["orientation_sweeps"][sweep_id] # dict, unabhängiger Snapshot
raw["active_orientation_sweep"] # str, solange ausstehend
raw["selected_orientation_sweeps"][position] # str, zuletzt akzeptierte ID
raw["sweep_selections"][evaluation_name]["sweeps"] # dict: Orientierung -> ID
raw["interactive_session_incomplete"] # bool, Resume-Datei behalten
sweep_id ist ein stabiler UUID-Hexstring. Jeder Datensatz enthält id
(str), position (Orientierungsstring), variant und notes (str),
acquisition_id (nullbasierter Aufnahmeindex als Integer), frequencies
(Tupel aus float-Werten in Hz), prescan_detector (str), started_at_utc
(ISO-UTC-String) und status (running, awaiting_review, complete
oder interrupted). Snapshots ergänzen updated_at_utc; akzeptierte
Sweeps außerdem finished_at_utc. limit_title (str) und
screening_parameters (prescreen_margin_db in dB sowie
position_count_assumption als Integer) halten bei Verfügbarkeit den
Screeningkontext fest.
voltage im Snapshot behält die Hierarchie
Detektor/Frequenz/Port/Orientierung/Sample für genau diese Orientierung.
Verfügbare noise, Prescreen, RemeasurementCoverage, acquisition
und prescreen_e0y_source werden als Kontext kopiert. Prescreenkontext kann
weitere Orientierungen enthalten; nur position des Datensatzes gehört zu
diesem Sweep. Neue Empfängersamples können orientation_sweep_id (str)
tragen. Snapshots und Arbeitsdaten teilen keine veränderlichen Container.
Unterbrochene Sweeps werden mit derselben ID und vorhandenen Samples
fortgesetzt; eine bewusste Wiederholung erhält eine neue ID. Beim vorzeitigen
Beenden vor Aufnahme aller angeforderten Orientierungen bleibt Autosave erhalten.
Bevor interaktive Messungen eine Arbeitsorientierung ersetzen, werden ältere
Samples archiviert. Importierte Datensätze erhalten legacy_import=True,
variant="legacy", started_at_utc=None und Notizen mit dem ursprünglichen
Sampleindex. acquisition_id stammt aus den Samplemetadaten oder ist bei
fehlender Angabe der String "legacy". Gemischte Aufnahmemetadaten machen
einen importierten Datensatz interrupted und verhindern dessen Auswahl für
ein Endergebnis. Optionale Kontext- und Zeitstempelfelder können dort fehlen.
Der abschließende Auswahldialog akzeptiert einen vollständigen Sweep je Orientierung für eine kanonische orthogonale Dreiergruppe oder alle zwölf Orientierungen (Anhang A.3.2.3.2 des gepflegten IEC-61000-4-20-Entwurfs). Frequenzraster, Aufnahmeindex und EUT-Variante müssen übereinstimmen; der Prescan muss vollständig abgedeckt sein. Mehrere benannte Auswahlen sind möglich, ohne sämtliche Kombinationen aufzuzählen. Unterschiedliche Wiederholungszahlen sind zulässig. Anzeigeauswahl und Auswertungsauswahl bleiben getrennte Konzepte; IDs und Notizen ermöglichen spätere Vergleichsüberlagerungen.
Ein sweep_selections-Eintrag enthält sweeps (Orientierung-zu-ID-dict),
created_at_utc (ISO-UTC-String) und nach Auswertung result_description
(str). Die Erstellungszeit wird beim Hinzufügen jedes benannten Satzes in Qt
oder Terminal erfasst und bleibt bei späterem Finish sowie nach dem Laden des
Pickles unverändert. Eigene Adapter mit dem bisherigen Zwei-Argument-Aufruf von
SweepEvaluationSelection dürfen die Zeit weglassen; nur dann verwendet der
Ablauf seine Übernahmezeit. Mitgelieferte Zeiten müssen ISO-Zeitstempel in UTC
sein. Alle Vorschläge werden vor dem Speichern einer Auswahl validiert;
persistierte Schlüssel und Schema bleiben unverändert.
Die Auswertung erzeugt eine unabhängige Rohdatenansicht in bisheriger
Struktur und ein verarbeitetes Ergebnis unter
description + "::" + evaluation_name. Dessen
selected_orientation_sweeps dokumentiert die Herkunft. Korrelationsformeln
und Anforderungen an finale Detektoren bleiben erhalten. Es gibt keine
implizite Auswahl: Schließen ohne Hinzufügen speichert die Messungen ohne
neues Endergebnis. Das Messpickle enthält sämtliche Sweeps und Auswahlen;
der normale Rohdatentabellenexport bildet das Arbeitsdictionary ab, nicht
jede aufbewahrte Wiederholung.
Der Sweep-Dialog unterscheidet zwei Abschlussaktionen: Finish acquisition & select results beendet die Aufnahme und führt zur Endauswahl. Save & exit without evaluation behält die gemessenen Sweeps und beendet den Ablauf ohne neue Endauswertung. Im Auswahldialog verwirft die zweite Aktion neu vorgemerkte Auswahlen; frühere Auswahlen/Ergebnisse bleiben erhalten. Tooltips erläutern beide Aktionen. Das TEM-Emissionshauptfenster beschriftet seinen Abbruchknopf mit Stop measurement; andere Messarten behalten ihre RF-Off-Beschriftung.
Terminalprüfung ohne PySide6¶
Der Standard sweep_review="auto" verwendet installiertes Qt mit Anzeige oder
GUI-Dispatcher, sonst die Terminalprüfung. Für eine ausdrückliche Terminalwahl:
cdict["interactive_sweeps"] = True
cdict["sweep_review"] = "terminal"
cdict["sweep_review_dir"] = "output/sweep-review"
Einträge in measure_parameters überschreiben diese Einstellungen. Direkte
Measure_Emission-Aufrufe akzeptieren dieselben beiden Prüfparameter. qt
verlangt ausdrücklich Qt. Die Terminalprüfung benötigt interaktives stdin;
fehlen verwendbare Anzeige und Terminal, stoppt die Verfügbarkeitsprüfung vor
der Geräteerzeugung. Keine Prüfung wird stillschweigend bestätigt.
Unbeaufsichtigte Abläufe verwenden weiterhin interactive_sweeps=False.
Vor jeder Prüfung speichert das Programm eine PNG-Datei und nennt vollständigen Pfad, Sweep-ID und Orientierung. Das Bild verwendet denselben Helfer wie Qt: korrigierte Spannungen, verfügbare Rauschdaten, Screeninggrenzen und Margenschwellen. Das Bild in einem Betrachter öffnen und bei Bedarf vom Messrechner kopieren. Das Programm startet keinen Betrachter. Einzelorientierungen sind Screening, kein endgültiges Abstrahlungsergebnis; fehlende Grenzwertabschnitte bleiben unbewertet.
Nach Variante/Notizen ausdrücklich wählen: 1 wiederholt, 2 geht weiter,
3 beendet die Erfassung und führt zur Auswertungsauswahl, 4 speichert
und beendet ohne Annahme des ausstehenden Sweeps oder neue Auswertung. Leere
Variante/Notizen behalten bisherige Werte; - löscht Notizen. Leere/ungültige
Entscheidungen wiederholen die Frage. EOF oder Strg-C bedeutet Speichern/Beenden,
niemals Zustimmung. Ausstehende Daten behalten awaiting_review und
interactive_session_incomplete=True; Fortsetzung verwendet dieselbe ID und
vorhandene Samples. RF-Off/Quit bleibt wirksam. Metadaten werden erst nach
Validierung übernommen.
Die Endauswahl listet vollständige Sweeps mit IDs, Varianten und Notizen.
Gruppennummer oder a für alle zwölf Orientierungen wählen, anschließend je
Orientierung eine Sweep-Nummer und einen unbenutzten Auswertungsnamen. Mehrere
benannte Sätze sind möglich; f beendet und übernimmt sie. x, EOF oder
Strg-C verwirft neu vorgemerkte Sätze; frühere Ergebnisse bleiben. Dieselben
Prüfungen von Abdeckung, Variante, Frequenzraster und Erfassungs-ID gelten für
Qt und Terminal; unvollständige Sätze werden nicht ausgewertet.
Ohne explizites Verzeichnis liegen PNGs neben dem Autosave in
<Autosave-Stamm>-sweep-review; ohne Autosave-Pfad gilt
tem-emission-review im Arbeitsverzeichnis. Namen werden aus Sweep-IDs
abgeleitet und bei erneuter Anzeige desselben Sweeps wiederverwendet. Bilder
sind externe Prüfunterlagen, keine neuen Pickle-Attribute oder finalen Reports;
sie gehören zu den Messdaten außerhalb des Quell-Repositories. Adapter und
Callbacks bleiben lokal, werden nicht gepickelt und bei Fortsetzung anhand der
Konfiguration neu erzeugt.