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.

Weitere Rohdaten-Keys

Key

Bedeutung

geometry, eut_position

GTEM-Geometrie und optionale EUT-Koordinaten.

prescan_detector

Detektor des schnellen Ausgangsscans.

acquisition

mode, scan_chunk_size, progress_log_batch_size und detailed_point_logging des Messlaufs.

Prescreen

Frequenz-, Port- und positionsbezogene Vorbewertung.

RemeasureRequiredFrequencies

Sortierte Frequenzen, für die eine Nachmessung erforderlich ist.

RemeasurementCoverage

complete, operator_decision und noch missing gebliebene Detektor-/Positions-/Frequenzkombinationen.

prescreen_e0y_source

Bei der Vorbewertung verwendete Feldfaktor-Herkunft.

mg

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_detectors

Gleicher Index; Liste der tatsächlich verwendeten Detektoren.

e0y_source

Herkunft der Feldfaktoren einschließlich family, name und component. 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.