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
| parameter | value |
|---|---|
| basis | Executed thermal fault model; protection thresholds and response times are reference assumptions, not qualified protective hardware. |
| time_step_s | 2 |
| horizon_s | 5400 |
| fault_time_s | 600 |
| heater_cutoff_C | 125 |
| surface_cutoff_C | 105 |
| cutoff_delay_s | 2 |
| screen_maximum_heater_C | 135 |
| screen_maximum_surface_C | 110 |
| readiness_hold_s | 300 |
| 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
| case | final_ready | cutoff_s | peak_surface_C | peak_heater_C | final_surface_min_C | final_surface_max_C |
|---|---|---|---|---|---|---|
| normal | True | None | 96.75667182826378 | 102.05596386159323 | 89.05132130561506 | 90.00790509836344 |
| heater_open | False | None | 94.21379555843768 | 101.62441390086057 | 86.33727228111216 | 91.18385443804934 |
| poor_contact | False | 70 | 30.54479156685747 | 127.0924441238627 | 22.19242725181776 | 22.192993533437978 |
| relay_stuck_unprotected | False | None | 193.49575079760731 | 205.30502438070224 | 191.03920622336662 | 193.49575079760731 |
| relay_stuck_protected | False | 936 | 105.22620672019617 | 116.92538513571891 | 25.448030781051358 | 25.458146006498524 |
| sensor_frozen_unprotected | False | None | 193.34601172352424 | 205.15509854289874 | 190.88990514250014 | 193.34601172352424 |
| sensor_frozen_protected | False | 990 | 105.2584733958202 | 116.95685593955196 | 25.584321078229316 | 25.59483612814725 |
| sensor_open | False | None | 80.25097858377012 | 89.88117770325763 | 23.897280207470953 | 23.902846113999537 |
| sensor_bias_minus5 | False | None | 102.10192067142304 | 107.77475366527935 | 93.98356092728868 | 95.01047292738556 |
| hot_ambient | True | None | 97.54063131905235 | 102.04746140362347 | 89.23049352739062 | 90.0041548746776 |
| high_losses | False | None | 90.41509495992945 | 101.4701366598044 | 87.97999533141335 | 89.99913718760112 |
| normal_grid_22_5 | True | None | 99.21962221093773 | 102.94554727191658 | 89.31888342910163 | 90.00304002696565 |
| normal_grid_22_20 | True | None | 92.83357196261638 | 101.06018120686007 | 88.50944606156686 | 90.00258751055357 |
| normal_grid_35_5 | True | None | 99.79780647841159 | 103.0054173888204 | 89.44365061385244 | 89.99703095591057 |
| normal_grid_35_20 | True | None | 93.87172304115792 | 100.76695670665357 | 88.79497220086309 | 90.00263012979823 |

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
| id | description | expected | observed | passed |
|---|---|---|---|---|
| energy-normal | Heat input equals stored plus lost energy | relative error < 1e-8 | 1.8802928225287818e-13 | True |
| energy-heater_open | Heat input equals stored plus lost energy | relative error < 1e-8 | 1.8816395754174122e-13 | True |
| energy-poor_contact | Heat input equals stored plus lost energy | relative error < 1e-8 | 2.8638594141652686e-13 | True |
| energy-relay_stuck_unprotected | Heat input equals stored plus lost energy | relative error < 1e-8 | 1.7876513044176946e-13 | True |
| energy-relay_stuck_protected | Heat input equals stored plus lost energy | relative error < 1e-8 | 2.3258788991190883e-13 | True |
| energy-sensor_frozen_unprotected | Heat input equals stored plus lost energy | relative error < 1e-8 | 1.7888418780398984e-13 | True |
| energy-sensor_frozen_protected | Heat input equals stored plus lost energy | relative error < 1e-8 | 2.3438763828681837e-13 | True |
| energy-sensor_open | Heat input equals stored plus lost energy | relative error < 1e-8 | 2.340426342986043e-13 | True |
| energy-sensor_bias_minus5 | Heat input equals stored plus lost energy | relative error < 1e-8 | 1.885565852572555e-13 | True |
| energy-hot_ambient | Heat input equals stored plus lost energy | relative error < 1e-8 | 1.9056306358116664e-13 | True |
| energy-high_losses | Heat input equals stored plus lost energy | relative error < 1e-8 | 1.1169533694369635e-13 | True |
| energy-normal_grid_22_5 | Heat input equals stored plus lost energy | relative error < 1e-8 | 1.4801145254117406e-13 | True |
| energy-normal_grid_22_20 | Heat input equals stored plus lost energy | relative error < 1e-8 | 5.213723042158174e-14 | True |
| energy-normal_grid_35_5 | Heat input equals stored plus lost energy | relative error < 1e-8 | 1.5291926002990023e-13 | True |
| energy-normal_grid_35_20 | Heat input equals stored plus lost energy | relative error < 1e-8 | 5.1833003833249124e-14 | True |
| normal-readiness | Full modeled working area stays in band for 300 s | ready at end; no cutoff | {'ready': True, 'cutoff': None} | True |
| relay_stuck-protection | Independent cutoff limits the modeled fault excursion | cutoff operates; heater <=135 C and surface <=110 C | {'cutoff_s': 936, 'heater_C': 116.92538513571891, 'surface_C': 105.22620672019617} | True |
| relay_stuck-unsafe | The same fault without cutoff exceeds the screened temperature | surface >110 C | 193.49575079760731 | True |
| sensor_frozen-protection | Independent cutoff limits the modeled fault excursion | cutoff operates; heater <=135 C and surface <=110 C | {'cutoff_s': 990, 'heater_C': 116.95685593955196, 'surface_C': 105.2584733958202} | True |
| sensor_frozen-unsafe | The same fault without cutoff exceeds the screened temperature | surface >110 C | 193.34601172352424 | True |
| poor-contact-cutoff | Poor contact is caught at the heater even if surface stays cooler | cutoff before 135 C heater | {'cutoff_s': 70, 'heater_C': 127.0924441238627} | True |
| open-sensor-failoff | An invalid controller sensor latches power off | all power = 0 after fault | 0.0 | True |
| bias-quality-gate | A 5 C low-reading controller cannot falsely satisfy the full-surface criterion | not ready at end | False | True |
| selected-envelope | Six ambient/loss corner cases meet the selected operating conditions | all 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-rejection | Loss of one heater cannot release an out-of-band process | not ready | False | True |
| insulation-loss-rejection | Combined high top/bottom losses outside the selected envelope are rejected | not ready at end | False | True |
| cutoff-step-refinement | Halving dt preserves protected-fault peak and cutoff time | peak difference < 1 C; trip difference <= 4 s | {'peak_difference_C': 0.06924999552458644, 'trip_difference_s': 1.0} | True |
Model boundaries
- The same 2D thin-plate FE model underlies normal and fault cases. Through-thickness gradients, radiation separated from effective losses, adhesive behavior and actual wiring are outside this model.
- Cutoff sensors, a separate contactor, threshold accuracy and a 2 s response are assumed. This is a completed theoretical protection study, not certified safety hardware or firmware.
- The independent surface readiness check uses modeled surface temperatures. Real sensor placement, attachment errors, drift and calibration need measured data before a process qualification.
- Faults are single modeled failures except the explicit unprotected counterfactual. Common-cause loss of all sensing/power interruption is not protected by a numerical assumption.
- No physical heating, insulation fire assessment, electrical safety test, curing trial or measured warm-up result is claimed.
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.