Mode-stirred chamber

The MSC class supports calibration, EUT calibration, emission, and immunity measurements in a mode-stirred chamber. The individual stages do not produce isolated result files. Each stage loads the preceding MSC instance, appends measurement and evaluation data, and writes a new history pickle.

Measurement sequence

Main calibration characterizes the empty chamber and is repeated only after relevant changes to the measurement environment. EUTCal then determines the influence of the specific equipment under test. Emission and immunity measurements build on these data:

MainCal -> EUTCal -> Immunity
MainCal -> EUTCal -> Emission
MainCal -> EUTCal -> Immunity -> Emission

A later stage receives the preceding pickle through pickle_input_filename. The new pickle continues to contain the complete history.

Virtual workflow

Run a complete hardware-independent immunity chain from the repository root:

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

A subsequent emission measurement uses the accumulated history:

python script/msc-emission.py \
    script/conf/msc-emission-virtual/conf-after-immunity.py

The configuration files already connect the pickle paths for this sequence. When running an individual stage, its expected input pickle must therefore exist.

Outputs and resume

Each script typically writes:

  • a final history pickle;

  • an autosave pickle during the measurement;

  • raw and evaluated data in DAT format;

  • a text log.

When a valid autosave exists, the script resumes the interrupted measurement routine at its recorded position. It does not acquire already completed points again. The autosave is removed after successful completion.

Operator interfaces

All four text scripts have Qt variants with the -qt suffix. Both interfaces use the same measurement classes and configuration files. RF-off and abort handling remain part of the measurement logic and must not depend solely on the user interface.

EUT monitoring

The standard MSC immunity measurement and the threshold search use structured EUT events. Manual intervention through the keyboard or a GUI always remains active. eut_monitor may add one automatic monitor or a sequence of monitors, for example for communication traffic, camera evaluation, or test-level supervision. Blocking hardware access belongs in a ThreadedEUTMonitor.

performance_criterion selects performance criterion A, B, or C. For B and C, post_exposure_timeout can open an observation phase after RF is switched off so that recovery and functional state can be recorded. Independently, eut_event_policy determines whether an event continues, retries, or stops the measurement. An event requesting safety_action="rf_off" switches RF off immediately.

Measurement and evaluation store the information at:

  • 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"].

Historical text statuses remain evaluable. New measurements always store the structured event in addition to the compact text status. Events from different tuner positions are evaluated separately before they are aggregated; recovery at one position therefore cannot make another exposure pass retroactively.

The task-oriented EUT monitoring guide provides complete parameter and implementation examples.