Messklassen

Messklassen bündeln einen vollständigen fachlichen Ablauf: Gerätegraph, Messung, Autosave, Auswertung, Rückführbarkeit und Report. Die Skripte unter script bilden die bevorzugte Bedienebene und konfigurieren die jeweilige Klasse.

Verfügbare Messumgebungen

Klasse

Aufgaben

Skripte

Vorbereitende Daten

MSC

MainCal, EUTCal, Emission und Immunity in der Modenverwirbelungskammer

msc-maincal.py, msc-eutcal.py, msc-emission.py, msc-immunity.py sowie Qt-Varianten

MainCal und anschließend EUTCal

TEMCell

Verifikation, e0y, Emission und Immunity in TEM-/GTEM-Zellen

tem-verification.py, tem-e0y.py, tem-emission.py, tem-immunity.py sowie Qt-Varianten

Geometrie und, je nach Aufgabe, Verifikation oder e0y

AmplifierTest

Kleinsignalverstärkung, Kompressionspunkte und Schutzgrenzen

amplifier-test.py und amplifier-test-qt.py

Gerätekonfiguration und Korrekturpfade

Konfigurationsketten

Die Messskripte akzeptieren beliebig viele Konfigurationsdateien. Sie werden von links nach rechts angewendet, sodass eine allgemeine Basiskonfiguration durch eine lokale Konfiguration ergänzt werden kann:

python script/tem-immunity.py \
    /opt/mpylab/gtem/conf/immunity_conf.py \
    local_conf.py

Jede Datei ist ein Python-Modul und kann cdict, update_config oder beides definieren. Ein cdict wird rekursiv mit der bis dahin aufgebauten Konfiguration zusammengeführt. Verschachtelte Dictionaries bleiben dabei erhalten; spätere Werte überschreiben gleichnamige Werte. Listen, Tupel und andere Werte werden dagegen vollständig ersetzt. Damit bleibt beispielsweise ein lokaler Geometrieparameter klein und eindeutig:

cdict = {
    "log_filename": "local_immunity.log",
    "geometry": {
        "height": 0.75,
    },
}

Für eine gezielte Änderung innerhalb einer Liste dient update_config(config). Der Hook läuft nach dem cdict derselben Datei, verändert die aufgebaute Konfiguration direkt und muss None zurückgeben:

def update_config(config):
    parameters = config["measure_parameters"][0]
    parameters.update(
        {
            "dotfile": "immunity.dot",
            "SearchPaths": ["/opt/mpylab/gtem/conf"],
            "freqs": [150e6],
        }
    )

Ein implizites Zusammenführen von Listenelementen findet bewusst nicht statt. Soll etwa die vollständige Frequenzliste oder die Liste der Beschreibungen geändert werden, wird sie in cdict vollständig angegeben. Selektive Änderungen an measure_parameters oder evaluation_parameters sollten über update_config erfolgen.

Text- und Qt-Skripte verwenden dieselbe Lade- und Überschreibungsreihenfolge. Konfigurationsdateien sind ausführbarer Python-Code und dürfen daher nur aus vertrauenswürdigen Quellen geladen werden. Vor einem Hardwarelauf ist immer die resultierende Gesamtkonfiguration im Preflight zu prüfen.

Gemeinsamer Lebenszyklus

Die Messklassen folgen grundsätzlich demselben Ablauf:

  1. Konfiguration laden und validieren.

  2. Messhistorie neu anlegen oder aus einem Pickle fortsetzen.

  3. Preflight und Geräteinitialisierung durchführen.

  4. Messung mit regelmäßigem Autosave ausführen.

  5. RF sicher abschalten und Geräte beenden.

  6. Messdaten auswerten.

  7. Historie und abgeleitete Dateien speichern.

  8. Optional einen modularen Report erzeugen.

Pickle-Dateien sind dabei nicht nur ein Exportformat. Sie enthalten die Messhistorie und ermöglichen, spätere Messungen nachvollziehbar auf Kalibrierungen und vorherige Schritte zurückzuführen.

Bedienebene und Programmierschnittstelle

Für reguläre Messungen sollten die Skripte verwendet werden. Direkte Aufrufe der Methoden von MSC, TEMCell oder AmplifierTest sind vor allem für neue Anwendungen, Tests und spezialisierte Abläufe vorgesehen.