Virtuelle MSC-Abläufe ===================== Die MSC-Messskripte können mit virtuellen Gerätekonfigurationen ohne Laborhardware ausgeführt werden. Das ist für Entwicklung, Fehlersuche und Regressionstests gedacht. Verfügbare Skripte und Konfigurationen -------------------------------------- Die modernen textbasierten MSC-Skripte liegen im Verzeichnis ``script``: .. list-table:: :header-rows: 1 * - Skript - Zweck - Typische virtuelle Konfiguration * - ``msc-maincal.py`` - Kammerkalibrierung für ``empty`` und ``loaded`` - ``conf/msc-immunity-virtual/conf.py`` * - ``msc-eutcal.py`` - EUT-Loading-Kalibrierung - ``conf/msc-immunity-virtual/conf-eutcal.py`` * - ``msc-immunity.py`` - Störfestigkeitsmessung mit vorhandener Kalibrierhistorie - ``conf/msc-immunity-virtual/conf-immunity.py`` * - ``msc-emission.py`` - Emissionsmessung mit vorhandener Kalibrierhistorie - ``conf/msc-emission-virtual/conf.py`` oder ``conf/msc-emission-virtual/conf-after-immunity.py`` Für jedes dieser Skripte gibt es zusätzlich einen Qt-Starter mit derselben Konfigurationsschnittstelle: ``msc-maincal-qt.py``, ``msc-eutcal-qt.py``, ``msc-immunity-qt.py`` und ``msc-emission-qt.py``. Diese Starter verwenden die einfache Qt-Oberfläche mit ``Stop / RF Off`` und führen die Messlogik in einem Worker-Thread aus. Die Konfigurationen ``msc-immunity-virtual`` und ``msc-emission-virtual`` verwenden virtuelle Geräte und synthetische Pfadkorrekturen. Die passenden ``*-realpaths``-Konfigurationen verwenden weiterhin virtuelle Geräte, laden aber reale Pfadkorrekturdaten aus ``MpyConfig/LargeRC/ini``. Historien-Pickles ----------------- Die MSC-Pickle-Dateien sind Historien-Container. Ein Skript lädt eine bestehende ``MSC``-Instanz über ``pickle_input_filename``, ergänzt die nächste Messung und Auswertung und schreibt die vollständige aktualisierte Instanz nach ``pickle_output_filename``. Jedes neue Ausgabe-Pickle soll damit die gesamte bisherige Messhistorie plus die neu hinzugefügten Daten enthalten. Für die Rückführbarkeit sollten diese Dateien daher nicht als isolierte Zwischenkalibrierdateien verstanden werden. Typische Sequenzen sind: .. code-block:: text maincal -> eutcal -> immunity maincal -> eutcal -> emission maincal -> eutcal -> immunity -> emission Virtuelle MSC-Störfestigkeitskette ---------------------------------- Aus dem Verzeichnis ``script`` kann die virtuelle Störfestigkeitskette so gestartet werden: .. code-block:: console python msc-maincal.py conf/msc-immunity-virtual/conf.py python msc-eutcal.py conf/msc-immunity-virtual/conf-eutcal.py python msc-immunity.py conf/msc-immunity-virtual/conf-immunity.py Dieselbe Kette kann über die Qt-Starter ausgeführt werden: .. code-block:: console python msc-maincal-qt.py conf/msc-immunity-virtual/conf.py python msc-eutcal-qt.py conf/msc-immunity-virtual/conf-eutcal.py python msc-immunity-qt.py conf/msc-immunity-virtual/conf-immunity.py Die zugehörigen Ausgabe-Pickles werden unter ``conf/msc-immunity-virtual/output`` geschrieben. Die Realpath-Variante verwendet dieselbe Skriptreihenfolge mit ``conf/msc-immunity-virtual-realpaths``: .. code-block:: console python msc-maincal.py conf/msc-immunity-virtual-realpaths/conf.py python msc-eutcal.py conf/msc-immunity-virtual-realpaths/conf-eutcal.py python msc-immunity.py conf/msc-immunity-virtual-realpaths/conf-immunity.py Virtuelle MSC-Emission ---------------------- Für eine Emissionsmessung direkt nach der EUT-Kalibrierung: .. code-block:: console python msc-emission.py conf/msc-emission-virtual/conf.py Oder mit Qt-Oberfläche: .. code-block:: console python msc-emission-qt.py conf/msc-emission-virtual/conf.py Für eine Emissionsmessung, die eine zuvor gelaufene Störfestigkeitsmessung in derselben Historie erhalten soll: .. code-block:: console python msc-emission.py conf/msc-emission-virtual/conf-after-immunity.py Die entsprechenden Realpath-Varianten sind: .. code-block:: console python msc-emission.py conf/msc-emission-virtual-realpaths/conf.py python msc-emission.py conf/msc-emission-virtual-realpaths/conf-after-immunity.py Reale Pfaddaten --------------- Die ``*-realpaths``-Varianten erwarten den ``MpyConfig``-Checkout neben dem ``mpylab``-Repository: .. code-block:: text workspace/ ├── mpylab/ └── MpyConfig/ └── LargeRC/ └── ini/ Wenn ``MpyConfig/LargeRC/ini`` fehlt, werden Tests mit realen Pfadkorrekturdaten übersprungen. Die rein virtuellen Konfigurationen bleiben vollständig hardwareunabhängig. Tests ----- Die hardwareunabhängigen MSC-Abläufe werden durch die pytest-Suite abgedeckt: .. list-table:: :header-rows: 1 * - Test - Abdeckung * - ``test_msc_immunity_virtual_config.py`` - Lädt die virtuellen und Realpath-DOT-Konfigurationen und initialisiert den MGraph ohne Hardwarezugriff. * - ``test_msc_virtual_history_workflow.py`` - Führt die Skriptreihenfolge mit temporären Ausgabedateien aus und prüft, dass jedes Ausgabe-Pickle die vorherige ``MSC``-Historie erhält. Die Tests können aus dem Repository-Wurzelverzeichnis gestartet werden: .. code-block:: console PYTHONPATH=src:../scuq/src python -m pytest test