SYNTHETIC / THEORETICAL VALIDATION

Heated platen fault and commissioning study

The calculations and generated trials below were executed using the supplied source and declared inputs. They are not measurements from manufactured hardware.

Selected operating conditions

The selected reference assembly uses all three heaters, nominal 1000 W/(m2 K) contact, effective bottom U = 2 W/(m2 K), a 60 W power ceiling, and independent heater/surface cutoff monitoring. Six runs cover ambient 22/35 C crossed with top convection 5/10/20 W/(m2 K). All six finish with the entire working area in 88-92 C after a 300 s hold and without a protection trip. An open heater, poor contact, biased controller, and the U = 12 high-loss challenge are rejected operating states. Readiness is revoked whenever the full-surface band is lost.

Decision

The model reaches the full-surface band under the normal case. Poor heater contact, a stuck control output and a frozen controller sensor are examined with an independent power cutoff. Removing that protection produces excessive temperatures. A low-reading sensor can produce the wrong process temperature without reaching the cutoff; the full-surface readiness criterion rejects that case.

Protection and test inputs

parametervalue
basisExecuted thermal fault model; protection thresholds and response times are reference assumptions, not qualified protective hardware.
time_step_s2
horizon_s5400
fault_time_s600
heater_cutoff_C125
surface_cutoff_C105
cutoff_delay_s2
screen_maximum_heater_C135
screen_maximum_surface_C110
readiness_hold_s300
low_sensor_bias_C-5

The numerical protection latches when any heater reaches 125 C or the working surface reaches 105 C, then opens an independent power path after 2 s. It remains open for the rest of the run. A sensor-open condition latches the main output off immediately. Readiness requires every modeled working-area node to stay between 88 and 92 C for 300 s.

Executed fault cases

casefinal_readycutoff_speak_surface_Cpeak_heater_Cfinal_surface_min_Cfinal_surface_max_C
normalTrueNone96.75667182826378102.0559638615932389.0513213056150690.00790509836344
heater_openFalseNone94.21379555843768101.6244139008605786.3372722811121691.18385443804934
poor_contactFalse7030.54479156685747127.092444123862722.1924272518177622.192993533437978
relay_stuck_unprotectedFalseNone193.49575079760731205.30502438070224191.03920622336662193.49575079760731
relay_stuck_protectedFalse936105.22620672019617116.9253851357189125.44803078105135825.458146006498524
sensor_frozen_unprotectedFalseNone193.34601172352424205.15509854289874190.88990514250014193.34601172352424
sensor_frozen_protectedFalse990105.2584733958202116.9568559395519625.58432107822931625.59483612814725
sensor_openFalseNone80.2509785837701289.8811777032576323.89728020747095323.902846113999537
sensor_bias_minus5FalseNone102.10192067142304107.7747536652793593.9835609272886895.01047292738556
hot_ambientTrueNone97.54063131905235102.0474614036234789.2304935273906290.0041548746776
high_lossesFalseNone90.41509495992945101.470136659804487.9799953314133589.99913718760112
normal_grid_22_5TrueNone99.21962221093773102.9455472719165889.3188834291016390.00304002696565
normal_grid_22_20TrueNone92.83357196261638101.0601812068600788.5094460615668690.00258751055357
normal_grid_35_5TrueNone99.79780647841159103.005417388820489.4436506138524489.99703095591057
normal_grid_35_20TrueNone93.87172304115792100.7669567066535788.7949722008630990.00263012979823
Working surface and heater temperatures in normal and fault cases

Equations and implementation

Each step solves M (theta next - theta current) / dt + K theta next = f. The same supplied FE mass and conductance matrices are used. f contains the actual power at each heater, so an open heater contributes zero. A stuck output sets total requested power to 60 W. A separate modeled cutoff sets all actual heater powers to zero, independent of that output. The accumulated energy balance includes the powers that were actually applied.

Bench exercise represented by the data

The CSV records provide the complete cold start, fault injection at 600 s, trip request, delayed cutoff, cool-down and readiness state. The poor-contact case starts degraded. Hot-ambient and high-loss cases exercise boundary assumptions. The half-step rerun records cutoff timing and peak-temperature sensitivity. These are synthetic run logs, not filled-in measurement sheets.

Executed acceptance matrix

iddescriptionexpectedobservedpassed
energy-normalHeat input equals stored plus lost energyrelative error < 1e-81.8802928225287818e-13True
energy-heater_openHeat input equals stored plus lost energyrelative error < 1e-81.8816395754174122e-13True
energy-poor_contactHeat input equals stored plus lost energyrelative error < 1e-82.8638594141652686e-13True
energy-relay_stuck_unprotectedHeat input equals stored plus lost energyrelative error < 1e-81.7876513044176946e-13True
energy-relay_stuck_protectedHeat input equals stored plus lost energyrelative error < 1e-82.3258788991190883e-13True
energy-sensor_frozen_unprotectedHeat input equals stored plus lost energyrelative error < 1e-81.7888418780398984e-13True
energy-sensor_frozen_protectedHeat input equals stored plus lost energyrelative error < 1e-82.3438763828681837e-13True
energy-sensor_openHeat input equals stored plus lost energyrelative error < 1e-82.340426342986043e-13True
energy-sensor_bias_minus5Heat input equals stored plus lost energyrelative error < 1e-81.885565852572555e-13True
energy-hot_ambientHeat input equals stored plus lost energyrelative error < 1e-81.9056306358116664e-13True
energy-high_lossesHeat input equals stored plus lost energyrelative error < 1e-81.1169533694369635e-13True
energy-normal_grid_22_5Heat input equals stored plus lost energyrelative error < 1e-81.4801145254117406e-13True
energy-normal_grid_22_20Heat input equals stored plus lost energyrelative error < 1e-85.213723042158174e-14True
energy-normal_grid_35_5Heat input equals stored plus lost energyrelative error < 1e-81.5291926002990023e-13True
energy-normal_grid_35_20Heat input equals stored plus lost energyrelative error < 1e-85.1833003833249124e-14True
normal-readinessFull modeled working area stays in band for 300 sready at end; no cutoff{'ready': True, 'cutoff': None}True
relay_stuck-protectionIndependent cutoff limits the modeled fault excursioncutoff operates; heater <=135 C and surface <=110 C{'cutoff_s': 936, 'heater_C': 116.92538513571891, 'surface_C': 105.22620672019617}True
relay_stuck-unsafeThe same fault without cutoff exceeds the screened temperaturesurface >110 C193.49575079760731True
sensor_frozen-protectionIndependent cutoff limits the modeled fault excursioncutoff operates; heater <=135 C and surface <=110 C{'cutoff_s': 990, 'heater_C': 116.95685593955196, 'surface_C': 105.2584733958202}True
sensor_frozen-unsafeThe same fault without cutoff exceeds the screened temperaturesurface >110 C193.34601172352424True
poor-contact-cutoffPoor contact is caught at the heater even if surface stays coolercutoff before 135 C heater{'cutoff_s': 70, 'heater_C': 127.0924441238627}True
open-sensor-failoffAn invalid controller sensor latches power offall power = 0 after fault0.0True
bias-quality-gateA 5 C low-reading controller cannot falsely satisfy the full-surface criterionnot ready at endFalseTrue
selected-envelopeSix ambient/loss corner cases meet the selected operating conditionsall six ready at end with no cutoff[{'case': 'normal', 'ready': True, 'cutoff': None}, {'case': 'hot_ambient', 'ready': True, 'cutoff': None}, {'case': 'normal_grid_22_5', 'ready': True, 'cutoff': None}, {'case': 'normal_grid_22_20', 'ready': True, 'cutoff': None}, {'case': 'normal_grid_35_5', 'ready': True, 'cutoff': None}, {'case': 'normal_grid_35_20', 'ready': True, 'cutoff': None}]True
heater-open-rejectionLoss of one heater cannot release an out-of-band processnot readyFalseTrue
insulation-loss-rejectionCombined high top/bottom losses outside the selected envelope are rejectednot ready at endFalseTrue
cutoff-step-refinementHalving dt preserves protected-fault peak and cutoff timepeak difference < 1 C; trip difference <= 4 s{'peak_difference_C': 0.06924999552458644, 'trip_difference_s': 1.0}True

Model boundaries

Reproduce

From this project folder, run python complete_validation.py. Run python test_completion.py for independent regression checks. Inputs are in completion-inputs.json; machine-readable outcomes and source hashes are in completion.json.