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.
Threshold search¶
ImmunityThresholdKernel increases the electric field step by step until
EUT monitoring reports an impairment or the largest configured field is
reached. The kernel owns neither devices nor a measurement graph. It only
emits commands; Measure_Immunity executes them and immediately switches
RF off when an EUT event requests safety_action="rf_off".
A runnable virtual configuration is available at
script/conf/msc-immunity-virtual/conf-immunity-threshold.py. Run it after
MainCal and EUTCal:
python script/msc-immunity.py \
script/conf/msc-immunity-virtual/conf-immunity-threshold.py
The main kernel parameters are:
field_levelsStrictly increasing field strengths expressed as
Quantity(EFIELD, ...). Plain numbers are interpreted as V/m.backtrack_levelsNumber of field-level entries by which the next frequency starts below the last tested level.
dwellEUT observation time for each field level and tuner position.
eut_monitorOptional automatic monitoring. Manual intervention through
keylistremains available independently of automatic monitors.
Structured results are stored in the history pickle at
rawData_Immunity[description]["threshold_search"][frequency]. Each entry
contains at least status, field, level_index, tuner_position,
and, when applicable, the triggering eut_event. Autosave and resume work
on frequency, tuner-position, and field-level combinations; completed
exposures are not repeated.