Modenverwirbelungskammer ======================== Die Klasse ``MSC`` unterstützt Kalibrierung, EUT-Kalibrierung, Emission und Störfestigkeit in einer Modenverwirbelungskammer. Die einzelnen Schritte erzeugen keine voneinander isolierten Ergebnisdateien. Jeder Schritt lädt die bisherige ``MSC``-Instanz, ergänzt Messung und Auswertung und schreibt ein neues Historien-Pickle. Messreihenfolge --------------- Die Hauptkalibrierung beschreibt die leere Kammer und wird nur nach relevanten Änderungen der Messumgebung wiederholt. ``EUTCal`` bestimmt anschließend den Einfluss des konkreten Prüflings. Darauf bauen Emissions- und Störfestigkeitsmessungen auf: .. code-block:: text MainCal -> EUTCal -> Immunity MainCal -> EUTCal -> Emission MainCal -> EUTCal -> Immunity -> Emission Ein späterer Schritt erhält das Pickle des vorherigen Schritts über ``pickle_input_filename``. Das neue Pickle enthält weiterhin die vollständige Vorgeschichte. Virtueller Ablauf ----------------- Aus dem Repository-Wurzelverzeichnis kann eine vollständige Störfestigkeits- kette ohne Hardware gestartet werden: .. code-block:: console python script/msc-maincal.py \ script/conf/msc-immunity-virtual/conf.py python script/msc-eutcal.py \ script/conf/msc-immunity-virtual/conf-eutcal.py python script/msc-immunity.py \ script/conf/msc-immunity-virtual/conf-immunity.py Eine anschließende Emissionsmessung verwendet die bereits aufgebaute Historie: .. code-block:: console python script/msc-emission.py \ script/conf/msc-emission-virtual/conf-after-immunity.py Die Konfigurationsdateien legen die Pickle-Verweise bereits passend für diese Reihenfolge fest. Für einen einzelnen Schritt muss das erwartete Eingangs-Pickle daher vorhanden sein. Ausgaben und Wiederanlauf ------------------------- Jedes Skript schreibt typischerweise: * ein finales Historien-Pickle; * ein Autosave-Pickle während der Messung; * Roh- und Auswertedaten im DAT-Format; * ein Textlog. Wird ein gültiges Autosave gefunden, setzt das Skript die unterbrochene Messroutine an der gespeicherten Stelle fort. Bereits vollständig gemessene Punkte werden nicht erneut aufgenommen. Nach erfolgreichem Abschluss wird das Autosave entfernt. Bedienoberflächen ----------------- Zu den vier Textskripten existieren Qt-Varianten mit dem Namenszusatz ``-qt``. Beide Bedienformen verwenden dieselben Messklassen und Konfigurationsdateien. RF-Off und Abbruch bleiben Teil der Messlogik und dürfen nicht ausschließlich von der Oberfläche abhängen. EUT-Überwachung --------------- Die normale MSC-Störfestigkeitsmessung und die Schwellwertsuche verwenden strukturierte EUT-Ereignisse. Eine manuelle Intervention über Tastatur oder GUI bleibt immer aktiv. ``eut_monitor`` kann zusätzlich einen automatischen Monitor oder eine Liste von Monitoren aufnehmen, etwa für Kommunikation, Kameraauswertung oder Prüfpegel. Blockierende Hardwarezugriffe gehören in einen ``ThreadedEUTMonitor``. ``performance_criterion`` wählt das Leistungskriterium ``A``, ``B`` oder ``C``. Für B und C kann ``post_exposure_timeout`` eine Beobachtungsphase nach dem Abschalten von RF öffnen, in der Erholung und Funktionszustand erfasst werden. ``eut_event_policy`` legt unabhängig davon fest, ob ein Ereignis die Messung fortsetzt, wiederholt oder beendet. Ein Ereignis mit ``safety_action="rf_off"`` schaltet RF unmittelbar ab. Messung und Auswertung speichern die Informationen unter: * ``rawData_Immunity[description]["performance_criterion"]``; * ``rawData_Immunity[description]["eutstatus"][...]["eut_event"]``; * ``processedData_Immunity[description]["performance_assessment"]``; * ``processedData_Immunity[description]["performance_assessment_by_exposure"]``; * ``processedData_Immunity[description]["performance_assessment_by_frequency"]``. Historische Textzustände bleiben auswertbar. Neue Messungen schreiben immer das strukturierte Ereignis zusätzlich zum kompakten Textstatus. Ereignisse unterschiedlicher Tunerpositionen werden zunächst getrennt bewertet und erst danach zusammengefasst; Erholung an einer Position kann daher keine andere Exposition nachträglich bestehen lassen. Die anwendungsorientierte :doc:`EUT-Monitoring-Anleitung <../framework/eut-monitoring>` enthält vollständige Parameter- und Implementierungsbeispiele. Schwellwertsuche ---------------- ``ImmunityThresholdKernel`` erhöht die elektrische Feldstärke schrittweise, bis die EUT-Überwachung eine Beeinträchtigung meldet oder die größte konfigurierte Feldstärke erreicht ist. Der Kernel besitzt weder Geräte noch einen Messgraphen. Er erzeugt ausschließlich Kommandos; ``Measure_Immunity`` führt diese aus und schaltet bei einem EUT-Ereignis mit ``safety_action="rf_off"`` unmittelbar RF ab. Eine lauffähige virtuelle Konfiguration liegt unter ``script/conf/msc-immunity-virtual/conf-immunity-threshold.py``. Sie wird nach MainCal und EUTCal gestartet: .. code-block:: console python script/msc-immunity.py \ script/conf/msc-immunity-virtual/conf-immunity-threshold.py Die wesentlichen Kernelparameter sind: ``field_levels`` Streng aufsteigende Feldstärken als ``Quantity(EFIELD, ...)``. Reine Zahlen werden als V/m interpretiert. ``backtrack_levels`` Anzahl der Feldstufen, um die der Startpunkt bei der nächsten Frequenz gegenüber der zuletzt geprüften Stufe zurückgesetzt wird. ``dwell`` Beobachtungszeit des EUT je Feldstärke und Tunerposition. ``eut_monitor`` Optionale automatische Überwachung. Die manuelle Intervention über ``keylist`` bleibt unabhängig davon immer verfügbar. Die strukturierten Ergebnisse stehen im Historien-Pickle unter ``rawData_Immunity[description]["threshold_search"][frequency]``. Ein Eintrag enthält mindestens ``status``, ``field``, ``level_index``, ``tuner_position`` und gegebenenfalls das auslösende ``eut_event``. Autosave und Wiederanlauf arbeiten auf der Kombination aus Frequenz, Tunerposition und Feldstufe; vollständig gemessene Expositionen werden nicht wiederholt.