
Instrumentensoftware · seit 2024
CryoSoft
Kryogene Messungen, die 30 bis 40 Stunden ohne Aufsicht laufen, innerhalb von Sicherheitsgrenzen, die die Software selbst durchsetzt.
Kurz gesagt
Der LabVIEW-Messcode des Labors war eine flache Folge fest einprogrammierter Befehle: Geräteparameter waren über den ganzen Code verstreut, der Austausch eines Geräts bedeutete stundenlanges Umschreiben, und die Metadaten, mit denen sich ein Messartefakt zurückverfolgen lässt, wurden nicht gespeichert. Messläufe über Nacht von 30 bis 40 Stunden hatten kein Sicherheitsnetz in der Software, sodass nichts einen unsicheren Übergang von Magnet oder Temperatur aufgehalten hätte.
Mein Mess-Stack seit 2024, hinter den Arbeiten zum Magnetowiderstand und zum Exchange Bias, und die Grundlage, die I2AS verallgemeinert.
Ein Programm zwischen dem Kryostaten und jedem Gerät um ihn herum.
Wie
- Den Stack in sechs Schichten aufgeteilt: rohe Treiber, typisierte virtuelle Instrumente, eine YAML-Registry des Messplatzes (ruamel.yaml), ein Orchestrator, Messabläufe und die GUI, jede nur von der darunterliegenden abhängig, sodass ein Gerätetausch eine Änderung der Konfiguration ist. Jeder echte Treiber (Oxford Mercury iPS, ITC 503, ILM 200, Lakeshore 335, Keithley 6221 und 2182A, über PyVISA und PyMeasure) hat einen simulierten Zwilling zum Testen ohne Gerät.
- Die Sicherheit in einen Zustandsautomaten für den Kryostaten gelegt, getaktet von einem einzigen Qt-QTimer. Prüfungen bei jedem Takt erzwingen EMERGENCY bei niedrigem Heliumstand oder einem veralteten Sensorwert, und Rampenziele werden über eine
RampableVI-Schnittstelle validiert, die einenCryoSoftSafetyErrorauslöst. - Die GUI mit PyQt6 und pyqtgraph per Introspektion erzeugt, aus Methoden, die als
monitoredodercontrolmarkiert sind, mit Pythonsinspectundtyping, sodass die Bedienelemente eines neuen Geräts ohne GUI-Code erscheinen. - Eine HDF5-Datei pro Messung geschrieben, mit h5py und numpy: Metadaten, Datenpunkte mit Zeitstempel und ein vollständiges Abbild aller Geräte für jeden Sweep-Punkt, genug für die Ursachenanalyse eines Artefakts. Bei einem Abbruch werden die Arrays sauber gekürzt.
- Getestet und typisiert gehalten, mit pytest, pytest-qt und mypy.
Neuere Arbeit hat einen Konfigurationseditor, eine Sitzungsverwaltung und eine Agenten-Umgebung für Inbetriebnahme, neue Treiber und Fehlersuche hinzugefügt. Ich erweitere das System so, dass Software-Agenten über MCP damit arbeiten können.