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.
Klasse |
Aufgaben |
Skripte |
Vorbereitende Daten |
|---|---|---|---|
|
MainCal, EUTCal, Emission und Immunity in der Modenverwirbelungskammer |
|
MainCal und anschließend EUTCal |
|
Verifikation, e0y, Emission und Immunity in TEM-/GTEM-Zellen |
|
Geometrie und, je nach Aufgabe, Verifikation oder e0y |
|
Kleinsignalverstärkung, Kompressionspunkte und Schutzgrenzen |
|
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:
Konfiguration laden und validieren.
Messhistorie neu anlegen oder aus einem Pickle fortsetzen.
Preflight und Geräteinitialisierung durchführen.
Messung mit regelmäßigem Autosave ausführen.
RF sicher abschalten und Geräte beenden.
Messdaten auswerten.
Historie und abgeleitete Dateien speichern.
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.
Messumgebungen