Audit follow-through: runbook, bench tools, recipes, release tooling

BRINGUP describes the present: the 54-test catalog and its seven-test
always core, the tier counts, the shipped low-temperature gates, the
density floor ($35 = 10), the two local core commits, the ffboot env
write, the aa-offset route, the current bench image, and the bench
measurements the audit asks for (pooled into the next session). The
workstation shell notes and every em dash are gone.

forgetest: the takeover waits for the cloud client too (found by its
command line); the unauthenticated /boot probe names the endpoint's
parameter; the UI prose is American English. Recipes: forgetest
fetches its package directory and init script only and drops
__pycache__ at unpack; the dev image no longer re-adds forgectrl; the
release image's remove list drops the gfui-client the BSP no longer
has; the platform identity strips the kernel's local-version hash
from the modules directory name, so a re-patched kernel keeps its
fingerprints. grblhal restart is stop then start. release.sh --dev
packs the dev image. fixture.sh refuses a readable env file.

Bench tools: the live-fire drills measure the lid-IR baseline before
every run and point at the fire-watch thresholds the engine reads;
one thermistor conversion (gfbench.degc) serves every drill; the six
dated measurement records leave the tool directory; feeder.c names the
two sysfs writes its caller makes.

Host tests: forgetest 258 pass; the coverage lint reports no uncovered
path across 54 tests. Acceptance: forgectrl.auth covers the /boot
probe; update.* cover ffboot and the manifest identity; the runbook
and bench-tool changes have no catalog consequence.
This commit is contained in:
ScottW514
2026-09-02 09:51:23 -04:00
parent 6002da8d12
commit 88ec984e28
29 changed files with 265 additions and 5296 deletions
+4 -4
View File
@@ -46,15 +46,15 @@ page's takeover does that; from a host, stop them first.
| `offset_probe.py` | Coolant-sensor offset probe (board; forgectrl idle; dark, no press): switches one actuator at a time (exhaust at 100/50/25 %, intakes, air assist, purge, heater, pump, TEC, lid lamp, then all run fans) with both thermistors sampled at 25 Hz and scores the common-mode step at every edge and the level toggling inside every dwell; `offset_probe.py ladder` runs the air-assist duty ladder alone. Every value is restored on exit. JSON record in the bench data directory. |
| `flow_warm_validate.py` | Runs the real check from a heater-warmed baseline (board or host; forgectrl and controller stopped; `flow_warm_validate.py [cycles_per_case]`; results/log in the bench data directory; exit 1 if any run is misclassified). Note the ceiling: 100 % duty pushes the downstream sensor past 50 °C in 30 s while the bulk barely moves, so warm-loop validation above ~23 °C needs the laser, not the heater. |
| `flow_recheck_char.py` | Characterizes short in-run re-checks and the differential metric (board or host; forgectrl and controller stopped; `flow_recheck_char.py [heater_pct] [window_s]`); shows why over-temp cannot see a stopped pump and why passive warming trends are ambiguous. |
| `flow_confirm_drill.py` | Coolant flow suspicion/confirmation drill (runs on the board): one continuous M8 session walks the verdict state machine through real pump-off transients — verified → SUSPECT (+ immediate re-check) → cleared → SUSPECT → FAULT (consecutive) → recovered — printing PASS/FAIL per transition. Leaves the machine idle (M9, pump on, heater off). |
| `flow_confirm_drill.py` | Coolant flow suspicion/confirmation drill (runs on the board): one continuous M8 session walks the verdict state machine through real pump-off transients - verified → SUSPECT (+ immediate re-check) → cleared → SUSPECT → FAULT (consecutive) → recovered - printing PASS/FAIL per transition. Leaves the machine idle (M9, pump on, heater off). |
| `flow_escalate_drill.py` | Coolant starved-re-check escalation drill (runs on the board, controller running): sets the engine's confirmation budget `cool_confirm_max_s` to a short value through forgectrl's settings (`flow_escalate_drill.py [budget_s]`, default 60, the setting's minimum) and restores it after; with the pump off the job-start check reads SUSPECT, the stagnant loop cannot pass the settle gate inside the budget, and the engine must escalate to FAULT. PASS/FAIL (exit status), leaves the machine idle. |
| `flow_sampler.py` | Board-side coolant sampler used by the flow tools (`flow_sampler.py <duration_s> <interval_s>`, prints `elapsed,raw_down,raw_up`); run on the board (dev image: `/usr/share/forgetest/bench/`) so cadence does not depend on ssh latency. |
| `temp_calibrate.py` | Coolant temperature spot-check helper (board or host): `watch [seconds]` / `point <measured_C> [note]` / `fit` — pairs a measured temperature with averaged raw ADC readings and fits a per-machine line to sanity-check the factory curve against a thermometer. Points accumulate in `temp_calibration.json` in the bench data directory. |
| `temp_calibrate.py` | Coolant temperature spot-check helper (board or host): `watch [seconds]` / `point <measured_C> [note]` / `fit` - pairs a measured temperature with averaged raw ADC readings and fits a per-machine line to sanity-check the factory curve against a thermometer. Points accumulate in `temp_calibration.json` in the bench data directory. |
| `build-glowforge.sh` | Cross-compiles **grblHAL-glowforge** (the canonical driver repo) in the Yocto build environment, borrowing the recipe toolchain. Run: `bash <path>/build-glowforge.sh` (from Windows, launch it through the WSL distro from PowerShell; Git Bash mangles /mnt/c paths). Env: `FF_SRC_TOP`, `FF_BUILD_TOP`. This is the production controller build. |
| `build-forgectrl.sh` | Cross-compiles **forgectrl** (the canonical control-daemon repo) the same way, borrowing the toolchain from the forgectrl recipe workdir (regenerate with `bitbake forgectrl` after a clean). |
| `accel_fast.py` | Direct-I2C sampler for the two head-bus LIS2HH12s (runs on the board; unbinds/rebinds st-accel around the capture, 800 Hz ODR, ~270 Hz per device polled): optional mid-capture jogs via local grblHAL TCP. CSV to /tmp/accel.csv. The head accel is i2c-3 0x1e. |
| `bump_seek.py` | Accelerometer bump-seek homing prototype (runs on the board): creeps toward a rail in bounded jog segments via grblHAL TCP, learns the moving-noise baseline per segment, detects the contact jolt (~530 Hz sampling, 2-sample confirm), jog-cancels (0x85) and backs off. CSV to /tmp/bump.csv. |
| `accel_crash_probe.py` | Head-accel crash-detector de-risk drill (runs on the board; BRINGUP item 6): arms the head LIS2HH12's on-chip interrupt generator (IG_CFG1/IG_THS/IG_DUR1) and polls the latched IG_SRC1 for a strike, reporting the axes and raw magnitude. `coexist` (default) reaches the IG registers with I2C_SLAVE_FORCE while st_accel stays bound, so it proves whether the detector can be forgectrl-only with the liveness path untouched; `unbind` frees the device (stop the controller and forgectrl first). Touches only the IG registers, no full-scale change, no emission, no commanded motion by default (provoke a trip by hand or with one `--jog`). CSV to /tmp/accel_crash.csv. |
| `accel_crash_probe.py` | Head-accel crash-detector de-risk drill (runs on the board; the head crash detector): arms the head LIS2HH12's on-chip interrupt generator (IG_CFG1/IG_THS/IG_DUR1) and polls the latched IG_SRC1 for a strike, reporting the axes and raw magnitude. `coexist` (default) reaches the IG registers with I2C_SLAVE_FORCE while st_accel stays bound, so it proves whether the detector can be forgectrl-only with the liveness path untouched; `unbind` frees the device (stop the controller and forgectrl first). Touches only the IG registers, no full-scale change, no emission, no commanded motion by default (provoke a trip by hand or with one `--jog`). CSV to /tmp/accel_crash.csv. |
| `build-feeder.sh` | Cross-compiles `feeder.c` the same way. |
| `puls_profile.py` | Decodes factory `.puls` streams (raw or GF1-headered) into velocity/accel profiles: peak speeds, ramp-slope fits, per-move segments, Z cadence. Runs anywhere (stdlib only). Source of the factory-true grblHAL defaults: 700/590 mm/s² accel, 200 mm/s max rate, 28160 Hz travel tick. |
| `cp_watchdog_timing.py` | HV charge-pump watchdog one-shot timing (runs on the board): latches every CHG_PUMP feed pulse in GPIO3's edge detector (pin 24 only, IMR untouched, ICR2 restored on exit) and polls the `!Q` (`charge_pump_alive`) and `!HV_ENABLE` (`hv_enable`) pads through /dev/mem in a tight loop while it commands short local jogs; prints per-run t_w (last pulse → Q fall), Q → HV_ENABLE delay, priming latency and the feed period, with the loop's worst gap as the resolution. Motion only, laser locked, no other Grbl client attached. |
@@ -80,7 +80,7 @@ forgectrl's cooling engine refuses to let the laser fire unless a
heater-based flow check passes: with the pump commanded on, the loop heater
runs at `COOL_FLOW_HEATER_PCT` (40 %) for `COOL_FLOW_CHECK_S` (50 s) and the
downstream sensor's rise over its settled baseline must stay below
`COOL_FLOW_RISE_C` (14.4 °C) — a stopped pump lets the heater's output pool
`COOL_FLOW_RISE_C` (14.4 °C) - a stopped pump lets the heater's output pool
at the downstream sensor instead of being carried away. The three constants
live in `forgectrl/src/cool.h` and are the compiled defaults behind the
`cool_flow_*` settings.
+3 -2
View File
@@ -4,8 +4,9 @@
*
* Streams NOP (0x00) pulse bytes to /dev/glowforge, pacing by wall clock to
* hold a bounded queue depth (like a real grblHAL backend would),
* with the deadman flock held. Motors must be locked and the laser latch
* locked by the caller (bench_phase6.sh does this).
* with the deadman flock held. The caller locks the motors and the laser
* latch first: write 1 to /sys/glowforge/cnc/motor_lock and 1 to
* /sys/glowforge/cnc/laser_latch, and read both back before starting.
*
* Reports: feed statistics, worst scheduling stall, ENOMEM count, and the
* final driver state (expect "running" throughout, "underrun" only after
+1 -3
View File
@@ -62,9 +62,7 @@ def temps():
adc_f = 1024.0 * 1.3
rinf = 10000.0 * math.exp(-3380.0 / 298.15)
def degc(raw):
r = 10000.0 / (adc_f / float(raw) - 1.0)
return 3380.0 / math.log(r / rinf) - 273.15
from gfbench import degc
with open('/sys/glowforge/pic/water_temp_1') as f:
d = degc(f.read())
with open('/sys/glowforge/pic/water_temp_2') as f:
-205
View File
@@ -1,205 +0,0 @@
=== flow matrix started 2026-08-02 20:20:59
duties=[10, 15, 20, 30, 40, 50] repeats=5 run=75s durations=[15, 20, 25, 30, 40, 50, 60, 75]
controller stopped for the experiment
initial settle (180 s with fans)...
baseline: down=22.62 up=22.46 (target for every run: <= 22.96)
[ 1/60] rep1 duty 10% FLOW start=22.77 down_rise@30s=3.93
elapsed 0.1 h
[ 2/60] rep1 duty 10% NO-FLOW start=22.38 down_rise@30s=3.10
elapsed 0.1 h
[ 3/60] rep1 duty 15% FLOW start=22.85 down_rise@30s=4.73
elapsed 0.1 h
[ 4/60] rep1 duty 15% NO-FLOW start=22.38 down_rise@30s=3.45
elapsed 0.2 h
[ 5/60] rep1 duty 20% FLOW start=22.77 down_rise@30s=3.64
elapsed 0.2 h
[ 6/60] rep1 duty 20% NO-FLOW start=22.46 down_rise@30s=6.82
elapsed 0.2 h
[ 7/60] rep1 duty 30% FLOW start=22.23 down_rise@30s=8.41
elapsed 0.2 h
[ 8/60] rep1 duty 30% NO-FLOW start=22.30 down_rise@30s=11.03
elapsed 0.3 h
[ 9/60] rep1 duty 40% FLOW start=22.93 down_rise@30s=11.46
elapsed 0.3 h
[10/60] rep1 duty 40% NO-FLOW start=22.46 down_rise@30s=15.27
elapsed 0.3 h
[11/60] rep1 duty 50% FLOW start=22.23 down_rise@30s=14.75
elapsed 0.3 h
[12/60] rep1 duty 50% NO-FLOW start=22.54 down_rise@30s=18.74
elapsed 0.4 h
[13/60] rep2 duty 10% FLOW start=21.84 down_rise@30s=3.14
elapsed 0.4 h
[14/60] rep2 duty 10% NO-FLOW start=22.30 down_rise@30s=2.29
elapsed 0.4 h
[15/60] rep2 duty 15% FLOW start=22.15 down_rise@30s=3.46
elapsed 0.5 h
[16/60] rep2 duty 15% NO-FLOW start=22.77 down_rise@30s=4.08
elapsed 0.5 h
[17/60] rep2 duty 20% FLOW start=22.15 down_rise@30s=4.69
elapsed 0.5 h
[18/60] rep2 duty 20% NO-FLOW start=22.77 down_rise@30s=5.51
elapsed 0.5 h
[19/60] rep2 duty 30% FLOW start=21.99 down_rise@30s=7.17
elapsed 0.6 h
[20/60] rep2 duty 30% NO-FLOW start=22.93 down_rise@30s=7.10
elapsed 0.6 h
[21/60] rep2 duty 40% FLOW start=22.62 down_rise@30s=8.82
elapsed 0.6 h
[22/60] rep2 duty 40% NO-FLOW start=22.62 down_rise@30s=13.46
elapsed 0.6 h
[23/60] rep2 duty 50% FLOW start=22.30 down_rise@30s=12.66
elapsed 0.7 h
[24/60] rep2 duty 50% NO-FLOW start=22.54 down_rise@30s=18.18
elapsed 0.7 h
[25/60] rep3 duty 10% FLOW start=22.07 down_rise@30s=2.43
elapsed 0.7 h
[26/60] rep3 duty 10% NO-FLOW start=22.07 down_rise@30s=3.40
elapsed 0.7 h
[27/60] rep3 duty 15% FLOW start=22.62 down_rise@30s=4.40
elapsed 0.8 h
[28/60] rep3 duty 15% NO-FLOW start=21.76 down_rise@30s=4.62
elapsed 0.8 h
[29/60] rep3 duty 20% FLOW start=22.85 down_rise@30s=4.35
elapsed 0.8 h
[30/60] rep3 duty 20% NO-FLOW start=21.68 down_rise@30s=4.79
elapsed 0.8 h
[31/60] rep3 duty 30% FLOW start=22.30 down_rise@30s=9.11
elapsed 0.9 h
[32/60] rep3 duty 30% NO-FLOW start=22.15 down_rise@30s=7.28
elapsed 0.9 h
[33/60] rep3 duty 40% FLOW start=21.91 down_rise@30s=10.00
elapsed 0.9 h
[34/60] rep3 duty 40% NO-FLOW start=22.85 down_rise@30s=14.55
elapsed 0.9 h
[35/60] rep3 duty 50% FLOW start=22.62 down_rise@30s=12.71
elapsed 1.0 h
[36/60] rep3 duty 50% NO-FLOW start=22.62 down_rise@30s=18.19
elapsed 1.0 h
[37/60] rep4 duty 10% FLOW start=22.54 down_rise@30s=2.75
elapsed 1.0 h
[38/60] rep4 duty 10% NO-FLOW start=20.75 down_rise@30s=2.92
elapsed 1.1 h
[39/60] rep4 duty 15% FLOW start=22.15 down_rise@30s=4.17
elapsed 1.1 h
[40/60] rep4 duty 15% NO-FLOW start=22.62 down_rise@30s=4.71
elapsed 1.1 h
[41/60] rep4 duty 20% FLOW start=21.37 down_rise@30s=5.48
elapsed 1.1 h
[42/60] rep4 duty 20% NO-FLOW start=22.23 down_rise@30s=4.77
elapsed 1.2 h
[43/60] rep4 duty 30% FLOW start=22.46 down_rise@30s=6.41
elapsed 1.2 h
[44/60] rep4 duty 30% NO-FLOW start=22.62 down_rise@30s=6.84
elapsed 1.2 h
[45/60] rep4 duty 40% FLOW start=22.54 down_rise@30s=10.50
elapsed 1.2 h
[46/60] rep4 duty 40% NO-FLOW start=22.69 down_rise@30s=14.56
elapsed 1.3 h
[47/60] rep4 duty 50% FLOW start=22.38 down_rise@30s=13.75
elapsed 1.3 h
[48/60] rep4 duty 50% NO-FLOW start=22.23 down_rise@30s=18.61
elapsed 1.3 h
[49/60] rep5 duty 10% FLOW start=22.38 down_rise@30s=2.67
elapsed 1.3 h
[50/60] rep5 duty 10% NO-FLOW start=22.07 down_rise@30s=4.10
elapsed 1.4 h
[51/60] rep5 duty 15% FLOW start=21.45 down_rise@30s=3.94
elapsed 1.4 h
[52/60] rep5 duty 15% NO-FLOW start=22.15 down_rise@30s=3.19
elapsed 1.4 h
[53/60] rep5 duty 20% FLOW start=21.91 down_rise@30s=4.26
elapsed 1.4 h
[54/60] rep5 duty 20% NO-FLOW start=22.46 down_rise@30s=5.25
elapsed 1.5 h
[55/60] rep5 duty 30% FLOW start=22.23 down_rise@30s=7.34
elapsed 1.5 h
[56/60] rep5 duty 30% NO-FLOW start=22.77 down_rise@30s=11.06
elapsed 1.5 h
[57/60] rep5 duty 40% FLOW start=22.93 down_rise@30s=9.65
elapsed 1.5 h
[58/60] rep5 duty 40% NO-FLOW start=22.38 down_rise@30s=13.48
elapsed 1.6 h
[59/60] rep5 duty 50% FLOW start=22.38 down_rise@30s=12.59
elapsed 1.6 h
[60/60] rep5 duty 50% NO-FLOW start=21.68 down_rise@30s=20.05
elapsed 1.6 h
=== COST: bulk (upstream) rise during a check, flow case, degrees C
duty 15s 20s 25s 30s 40s 50s 60s 75s
10% 0.34 0.62 0.67 0.33 0.30 0.58 0.09 0.34
15% 0.03 0.76 0.50 0.67 0.53 0.69 0.39 0.64
20% -0.08 -0.17 0.23 0.09 0.19 0.23 0.02 0.50
30% 0.79 0.73 1.39 0.83 1.11 1.17 1.42 1.22
40% 0.55 0.36 1.05 1.06 0.95 0.76 1.25 1.53
50% 1.26 1.83 1.72 1.59 2.03 2.03 2.19 2.69
=== PRECISION: downstream-rise discrimination (flow vs no-flow)
duty dur flow mean+-sd noflow mean+-sd sep worst d-prime
10% 15s 2.68+-0.45 2.03+-0.71 -0.65 -2.20 -1.1
10% 20s 2.90+-0.69 2.81+-0.37 -0.09 -1.65 -0.2
10% 25s 2.76+-0.69 3.10+-0.60 0.33 -1.80 0.5
10% 30s 2.98+-0.59 3.16+-0.66 0.18 -1.64 0.3
10% 40s 2.90+-0.86 3.30+-0.42 0.40 -1.08 0.6
10% 50s 3.05+-0.85 3.88+-0.44 0.83 -1.09 1.2
10% 60s 2.37+-0.54 3.61+-0.54 1.24 -0.21 2.3
10% 75s 2.60+-0.83 4.12+-0.54 1.52 -0.36 2.2
15% 15s 2.93+-0.63 2.93+-0.36 -0.01 -1.21 -0.0
15% 20s 3.97+-0.33 3.54+-0.35 -0.42 -1.31 -1.2
15% 25s 3.89+-0.86 3.95+-0.45 0.06 -1.46 0.1
15% 30s 4.14+-0.48 4.01+-0.68 -0.13 -1.55 -0.2
15% 40s 4.11+-0.79 4.43+-0.65 0.32 -1.54 0.4
15% 50s 4.17+-0.78 5.01+-0.34 0.83 -0.24 1.4
15% 60s 4.17+-0.52 5.09+-0.48 0.92 -0.21 1.8
15% 75s 4.21+-0.41 5.75+-0.45 1.54 +0.37 3.6
20% 15s 3.84+-0.78 3.57+-0.83 -0.27 -2.08 -0.3
20% 20s 4.18+-0.53 4.14+-0.83 -0.03 -1.36 -0.0
20% 25s 4.71+-0.92 4.90+-1.03 0.19 -1.91 0.2
20% 30s 4.48+-0.67 5.43+-0.84 0.95 -0.71 1.2
20% 40s 4.84+-0.58 5.79+-1.16 0.96 -0.61 1.0
20% 50s 4.98+-0.39 6.41+-0.79 1.43 +0.22 2.3
20% 60s 4.53+-0.66 6.67+-1.39 2.14 -0.44 2.0
20% 75s 4.95+-0.65 7.34+-1.02 2.39 +0.64 2.8
30% 15s 6.32+-0.81 5.63+-1.72 -0.69 -3.43 -0.5
30% 20s 7.13+-1.31 6.86+-2.24 -0.27 -3.67 -0.1
30% 25s 7.65+-0.92 7.73+-1.93 0.08 -2.63 0.1
30% 30s 7.69+-1.07 8.66+-2.18 0.97 -2.27 0.6
30% 40s 7.69+-0.90 9.96+-2.65 2.27 -1.00 1.1
30% 50s 8.15+-0.75 10.24+-2.37 2.09 -0.93 1.2
30% 60s 8.20+-0.70 10.77+-2.34 2.57 -0.35 1.5
30% 75s 8.27+-1.28 10.86+-2.26 2.59 -0.82 1.4
40% 15s 8.06+-0.87 10.14+-0.65 2.08 +0.37 2.7
40% 20s 8.93+-1.07 12.07+-0.48 3.13 +1.06 3.8
40% 25s 9.61+-1.22 13.47+-0.98 3.86 +0.96 3.5
40% 30s 10.09+-0.98 14.26+-0.78 4.18 +2.00 4.7
40% 40s 10.29+-1.41 16.01+-0.88 5.72 +2.77 4.9
40% 50s 10.14+-0.87 16.95+-0.74 6.81 +4.58 8.4
40% 60s 10.71+-1.22 17.27+-0.96 6.56 +3.72 6.0
40% 75s 10.46+-1.22 17.88+-0.77 7.42 +5.38 7.2
50% 15s 10.73+-0.65 13.02+-0.71 2.29 +0.22 3.3
50% 20s 12.71+-0.89 15.58+-0.85 2.87 +0.55 3.3
50% 25s 12.71+-0.96 17.10+-0.78 4.39 +1.66 5.0
50% 30s 13.29+-0.95 18.75+-0.76 5.46 +3.43 6.4
50% 40s 14.04+-0.80 20.38+-1.16 6.34 +3.48 6.3
50% 50s 14.38+-0.57 21.61+-0.93 7.23 +5.08 9.4
50% 60s 14.24+-0.48 22.14+-1.02 7.90 +5.94 9.9
50% 75s 14.18+-0.78 23.17+-1.10 8.99 +6.51 9.4
=== RANKED by d-prime (separation in pooled standard deviations)
rank duty dur d-prime worst-margin bulk-cost threshold
1 50% 60s 9.9 +5.94 2.19 18.19
2 50% 75s 9.4 +6.51 2.69 18.68
3 50% 50s 9.4 +5.08 2.03 18.00
4 40% 50s 8.4 +4.58 0.76 13.54
5 40% 75s 7.2 +5.38 1.53 14.17
6 50% 30s 6.4 +3.43 1.59 16.02
7 50% 40s 6.3 +3.48 2.03 17.21
8 40% 60s 6.0 +3.72 1.25 13.99
9 50% 25s 5.0 +1.66 1.72 14.91
10 40% 40s 4.9 +2.77 0.95 13.15
11 40% 30s 4.7 +2.00 1.06 12.18
12 40% 20s 3.8 +1.06 0.36 10.50
(worst-margin = min(no-flow) - max(flow); positive means every
observed no-flow run exceeded every observed flow run.
bulk-cost = degrees C added to the loop per check.)
controller restarted; total elapsed 1.63 h
File diff suppressed because it is too large Load Diff
-96
View File
@@ -1,96 +0,0 @@
=== warm-baseline validation 2026-08-02 22:43:41 duty=40% window=50s threshold=13.7
cycle 1/3 FLOW
warmed to down=21.84 up=21.91 in 1.3 min
base_up=22.07 down_rise=12.18 -> ok CORRECT (peak down 34.4 C)
cycle 1/3 NO-FLOW
warmed to down=22.46 up=21.84 in 1.0 min
base_up=21.84 down_rise=18.16 -> FAULT CORRECT (peak down 40.4 C)
cycle 2/3 FLOW
warmed to down=21.84 up=22.07 in 1.0 min
base_up=21.29 down_rise=12.75 -> ok CORRECT (peak down 34.5 C)
cycle 2/3 NO-FLOW
warmed to down=22.07 up=21.91 in 1.0 min
base_up=21.45 down_rise=18.15 -> FAULT CORRECT (peak down 40.5 C)
cycle 3/3 FLOW
warmed to down=22.07 up=21.91 in 1.0 min
base_up=21.60 down_rise=10.95 -> ok CORRECT (peak down 34.3 C)
cycle 3/3 NO-FLOW
warmed to down=22.30 up=22.30 in 1.0 min
base_up=21.76 down_rise=17.85 -> FAULT CORRECT (peak down 40.4 C)
=== warm-baseline results (baselines 21.3 - 22.1 C)
flow n=3 mean 11.96 sd 0.92 max 12.75
no-flow n=3 mean 18.06 sd 0.17 min 17.85
worst-case margin: +5.11 C threshold 13.7 sits +0.95 above flow max, +4.15 below no-flow min
misclassified: 0 of 6
controller restarted
=== warm-baseline validation 2026-08-02 22:56:44 duty=40% window=50s threshold=13.7
cycle 1/3 FLOW
warmed to down=22.30 up=22.07 in 1.3 min
base_up=22.23 down_rise=12.62 -> ok CORRECT (peak down 34.0 C)
cycle 1/3 NO-FLOW
warmed to down=22.23 up=21.84 in 1.0 min
base_up=21.76 down_rise=18.71 -> FAULT CORRECT (peak down 40.6 C)
cycle 2/3 FLOW
warmed to down=22.30 up=22.07 in 1.0 min
base_up=21.76 down_rise=11.03 -> ok CORRECT (peak down 34.3 C)
cycle 2/3 NO-FLOW
warmed to down=22.15 up=21.84 in 1.0 min
base_up=21.37 down_rise=18.26 -> FAULT CORRECT (peak down 40.1 C)
cycle 3/3 FLOW
warmed to down=22.54 up=22.15 in 1.0 min
base_up=21.99 down_rise=11.08 -> ok CORRECT (peak down 34.3 C)
cycle 3/3 NO-FLOW
warmed to down=22.07 up=21.84 in 1.0 min
base_up=21.91 down_rise=18.42 -> FAULT CORRECT (peak down 40.5 C)
=== warm-baseline results (baselines 21.4 - 22.2 C)
flow n=3 mean 11.58 sd 0.91 max 12.62
no-flow n=3 mean 18.46 sd 0.23 min 18.26
worst-case margin: +5.63 C threshold 13.7 sits +1.08 above flow max, +4.56 below no-flow min
misclassified: 0 of 6
controller restarted
=== warm-baseline validation 2026-08-02 23:10:04 duty=40% window=50s threshold=13.7
cycle 1/2 FLOW
warm abort: downstream 51.95 at 0.5 min
warmed to down=22.15 up=21.84 in 1.3 min
=== warm-baseline validation 2026-08-02 23:11:51 duty=40% window=50s threshold=13.7
cycle 1/2 FLOW
base_up=22.23 down_rise=15.53 -> FAULT *** WRONG *** (peak down 37.7 C)
cycle 1/2 NO-FLOW
warm abort: downstream 49.34 at 0.3 min
warm target reached: up=25.84 at 0.8 min
warmed to down=21.84 up=21.60 in 1.0 min
warmed to down=22.15 up=22.07 in 1.6 min
base_up=21.37 down_rise=10.69 -> ok *** WRONG *** (peak down 34.1 C)
cycle 2/2 FLOW
base_up=20.91 down_rise=11.48 -> ok CORRECT (peak down 34.4 C)
cycle 1/2 NO-FLOW
warming: 0.8 min down=37.53 up=23.71
warming: 0.8 min down=38.17 up=24.65
warming: 1.8 min down=37.80 up=23.94
warming: 1.8 min down=37.99 up=24.50
(warming plateaued at 24.18 C after 2.6 min)
warming: 2.9 min down=26.56 up=23.47
(warming plateaued at 23.47 C after 2.9 min)
warmed to down=21.68 up=21.60 in 3.4 min
warmed to down=28.57 up=21.84 in 3.6 min
base_up=21.37 down_rise=12.18 -> ok *** WRONG *** (peak down 34.1 C)
cycle 2/2 FLOW
base_up=21.91 down_rise=3.76 -> ok CORRECT (peak down 35.8 C)
cycle 2/2 NO-FLOW
warm abort: downstream 48.90 at 0.3 min
warm target reached: up=25.68 at 0.5 min
warmed to down=22.23 up=21.84 in 1.0 min
warmed to down=21.29 up=21.68 in 1.3 min
base_up=21.45 down_rise=11.58 -> ok *** WRONG *** (peak down 34.4 C)
base_up=21.06 down_rise=11.30 -> ok CORRECT (peak down 34.2 C)
cycle 2/2 NO-FLOW
=== warm-baseline results (baselines 21.4 - 22.2 C)
flow n=2 mean 9.65 sd 8.32 max 15.53
no-flow n=2 mean 11.13 sd 0.63 min 10.69
worst-case margin: -4.84 C threshold 13.7 sits -1.83 above flow max, -3.01 below no-flow min
misclassified: 3 of 4
controller restarted
warming: 0.8 min down=37.71 up=24.50
-32
View File
@@ -1,32 +0,0 @@
[
{
"flow": true,
"base_up": 20.90741361785507,
"base_down": 21.837331209719537,
"down_rise": 11.480714695811116,
"up_rise": 2.254025184475836,
"peak_down": 34.43702357179029,
"t": 49.15,
"cycle": 0
},
{
"flow": false,
"base_up": 21.371932016053336,
"base_down": 21.914988917022924,
"down_rise": 12.176080123337613,
"up_rise": 1.5552007482007184,
"peak_down": 34.09106904036054,
"t": 49.17,
"cycle": 0
},
{
"flow": true,
"base_up": 21.06216007856807,
"base_down": 21.75970016295645,
"down_rise": 11.302272149723365,
"up_rise": 2.6471638813487743,
"peak_down": 34.1774170676689,
"t": 49.16,
"cycle": 1
}
]
-601
View File
@@ -1,601 +0,0 @@
t_s,lid_ir_1,lid_ir_2,lid_ir_3,lid_ir_4,hv_current,water_1,water_2,pwr_temp,laser_on_sampled
4665.89,37,37,40,40,0,672,669,586,0
4666.45,37,36,40,40,0,674,674,586,0
4667.01,37,36,40,40,0,668,673,586,0
4667.57,37,36,39,40,0,667,669,593,0
4668.14,36,36,39,40,0,667,674,592,0
4668.70,38,36,39,40,0,668,674,593,0
4669.27,37,35,38,41,0,665,669,591,0
4669.83,39,37,39,39,0,667,666,592,0
4670.40,38,36,40,40,0,674,667,589,0
4670.96,37,36,38,41,0,668,667,593,0
4671.52,37,37,41,40,0,671,674,590,0
4672.09,38,36,41,40,0,671,666,589,0
4672.65,37,36,40,40,0,669,666,590,0
4673.22,37,36,38,41,0,669,676,593,0
4673.78,38,37,40,41,0,675,674,590,0
4674.35,36,38,40,40,0,669,667,590,0
4674.91,37,36,39,40,0,663,667,590,0
4675.48,38,38,39,40,0,667,666,592,0
4676.05,38,36,40,40,0,666,670,587,0
4676.62,38,36,38,39,0,672,667,586,0
4677.18,38,36,38,40,0,670,667,589,0
4677.75,37,36,39,40,0,666,664,592,0
4678.31,36,37,40,39,0,665,672,593,0
4678.88,37,36,40,40,0,667,669,593,0
4679.44,37,36,40,40,0,674,678,591,0
4680.01,37,36,40,39,0,667,665,587,0
4680.57,37,36,39,38,0,676,677,587,0
4681.14,37,35,40,40,0,675,670,587,0
4681.70,38,37,39,41,0,672,671,593,0
4682.27,36,36,39,40,0,675,671,592,0
4682.84,38,37,38,41,0,675,667,592,0
4683.40,37,36,38,40,0,667,666,593,0
4683.97,36,36,40,40,0,668,666,591,0
4684.53,37,36,39,40,0,669,669,594,0
4685.10,38,36,40,40,0,674,667,592,0
4685.66,37,36,39,39,0,673,669,586,0
4686.23,37,37,40,40,0,668,667,586,0
4686.79,36,36,39,39,0,668,666,593,0
4687.36,37,37,39,40,0,673,666,586,0
4687.92,37,36,40,41,0,666,669,593,0
4688.49,37,37,39,40,0,674,666,587,0
4689.06,36,36,39,41,0,666,674,586,0
4689.63,37,37,40,40,0,673,675,588,0
4690.19,37,36,40,40,0,662,674,593,0
4690.76,38,35,39,40,0,673,673,586,0
4691.32,37,37,40,41,0,671,671,593,0
4691.89,38,36,40,40,0,673,665,592,0
4692.45,37,36,40,40,0,674,672,591,0
4693.02,37,36,40,40,0,675,677,587,0
4693.58,38,37,40,40,0,677,668,592,0
4694.15,37,36,40,39,0,667,675,587,0
4694.71,37,36,40,39,0,676,675,593,0
4695.27,37,37,40,40,0,666,671,588,0
4695.84,38,36,40,40,0,674,673,587,0
4696.40,37,36,40,40,0,670,672,590,0
4696.97,37,36,38,40,0,669,674,588,0
4697.53,37,37,39,40,0,676,674,589,0
4698.10,38,36,40,39,0,677,669,591,0
4698.67,37,38,39,38,0,673,676,593,0
4699.23,38,36,39,40,0,670,675,587,0
4699.80,38,36,40,40,0,675,671,588,0
4700.37,38,36,40,40,0,673,668,583,0
4700.93,37,37,39,39,0,671,670,591,0
4701.50,37,35,41,39,0,675,674,587,0
4702.06,37,37,39,40,0,668,675,588,0
4702.63,37,36,39,40,0,669,666,591,0
4703.19,37,37,39,41,0,667,666,588,0
4703.75,36,36,39,40,0,672,667,588,0
4704.32,37,36,40,38,0,671,673,587,0
4704.88,37,36,39,40,0,676,673,586,0
4705.44,38,36,38,40,0,676,667,586,0
4706.01,37,36,40,40,0,670,669,587,0
4706.58,36,36,40,39,0,677,673,586,0
4707.15,37,37,40,41,0,674,670,589,0
4707.72,37,36,40,41,0,672,668,593,0
4708.28,38,37,39,40,0,669,665,591,0
4708.85,37,35,40,41,0,667,672,586,0
4709.41,37,36,40,41,0,671,674,586,0
4709.98,37,37,40,40,0,675,667,587,0
4710.54,37,37,39,41,0,666,667,590,0
4711.11,38,37,40,40,0,667,666,591,0
4711.67,37,36,38,40,0,670,668,586,0
4712.23,37,36,38,41,0,667,667,593,0
4712.80,38,36,39,41,0,666,673,592,0
4713.36,37,37,39,40,0,675,669,592,0
4713.93,37,36,40,39,0,671,672,589,0
4714.49,38,37,41,40,0,672,666,587,0
4715.05,37,36,38,39,0,666,672,586,0
4715.62,37,36,40,39,0,667,671,592,0
4716.18,39,36,40,40,0,665,665,590,0
4716.75,38,37,40,41,0,673,665,589,0
4717.31,36,36,39,40,0,678,673,593,0
4717.87,37,36,39,39,0,674,665,589,0
4718.44,38,37,40,42,0,668,669,593,0
4719.00,38,36,40,40,0,671,674,586,0
4719.57,37,36,39,40,0,668,667,592,0
4720.13,37,36,40,40,0,673,668,590,0
4720.69,38,37,40,40,0,674,667,592,0
4721.26,37,36,41,40,0,664,672,591,0
4721.83,37,37,39,40,0,671,669,588,0
4722.40,36,37,40,39,0,665,666,587,0
4722.96,38,37,39,40,0,676,675,586,0
4723.53,37,37,40,41,0,672,667,591,0
4724.10,38,36,39,40,0,669,668,594,0
4724.66,37,37,39,41,0,666,671,586,0
4725.23,37,37,40,40,0,673,674,586,0
4725.79,38,37,39,41,0,676,674,591,0
4726.36,37,37,40,41,0,675,670,586,0
4726.92,37,36,38,40,0,675,669,592,0
4727.49,37,37,39,40,0,673,676,590,0
4728.05,38,36,40,39,0,669,669,588,0
4728.62,37,36,40,40,0,676,674,586,0
4729.19,37,36,40,40,0,666,674,586,0
4729.75,37,36,38,41,0,667,674,587,0
4730.32,37,36,39,39,0,669,670,590,0
4730.89,38,36,39,41,0,668,666,594,0
4731.45,38,37,40,40,0,673,672,587,0
4732.02,38,36,39,40,0,674,665,587,0
4732.58,37,35,39,41,0,676,672,588,0
4733.14,38,35,39,40,0,677,669,589,0
4733.71,38,36,40,40,0,674,667,592,0
4734.27,36,36,39,39,0,673,666,593,0
4734.84,37,36,38,39,0,667,669,587,0
4735.40,38,37,39,40,0,669,666,593,0
4735.96,38,36,40,40,0,668,674,587,0
4736.53,37,36,38,40,0,667,675,587,0
4737.09,38,37,40,40,0,674,668,586,0
4737.66,38,36,39,41,0,667,673,588,0
4738.22,37,37,40,40,0,674,672,593,0
4738.78,37,36,39,40,0,670,667,587,0
4739.35,36,36,39,40,0,668,669,593,0
4739.92,37,37,40,40,0,667,671,591,0
4740.48,37,37,39,39,0,668,674,590,0
4741.05,37,36,39,39,0,668,666,586,0
4741.62,37,36,40,40,0,674,675,592,0
4742.18,37,36,39,39,0,670,676,586,0
4742.75,38,36,39,40,0,669,666,591,0
4743.32,37,36,40,40,0,675,674,587,0
4743.88,36,37,40,40,0,672,665,587,0
4744.45,37,36,39,40,0,674,671,592,0
4745.01,37,36,39,40,0,674,669,588,0
4745.58,37,36,39,40,0,675,665,587,0
4746.15,38,36,40,40,0,673,667,587,0
4746.72,37,35,41,40,0,667,665,590,0
4747.28,37,37,40,41,0,668,674,594,0
4747.85,38,36,39,41,0,668,674,588,0
4748.42,38,36,39,41,0,667,668,587,0
4748.99,36,37,39,39,0,674,674,586,0
4749.56,37,36,39,41,0,674,670,593,0
4750.12,37,36,40,40,0,675,672,592,0
4750.69,37,37,39,39,0,670,668,589,0
4751.25,38,37,39,40,0,672,670,590,0
4751.82,37,36,41,39,0,667,666,591,0
4752.38,38,37,39,40,0,669,666,587,0
4752.95,37,36,39,40,0,669,666,593,0
4753.51,38,36,39,40,0,676,669,592,0
4754.08,37,37,39,40,0,668,667,587,0
4754.65,38,35,38,40,0,667,670,594,0
4755.22,37,36,39,39,0,677,673,587,0
4755.79,38,36,39,40,0,672,666,587,0
4756.35,37,36,39,41,0,670,671,587,0
4756.92,38,36,39,41,0,675,669,593,0
4757.48,37,36,39,39,0,675,674,588,0
4758.05,37,36,39,40,0,672,674,593,0
4758.61,37,36,39,40,0,674,665,586,0
4759.18,37,37,39,39,0,673,669,588,0
4759.75,37,35,39,40,0,674,669,585,0
4760.32,37,37,40,39,0,671,673,587,0
4760.88,38,37,39,40,0,674,673,592,0
4761.45,38,36,39,40,0,673,673,591,0
4762.01,37,36,39,41,0,674,673,592,0
4762.58,37,36,39,41,0,666,672,589,0
4763.14,39,37,39,40,0,665,669,593,0
4763.70,37,36,40,40,0,673,675,587,0
4764.27,36,36,39,40,0,668,670,585,0
4764.83,37,36,39,40,0,668,675,587,0
4765.40,37,37,40,40,0,667,664,592,0
4765.97,38,37,40,40,0,670,676,593,0
4766.54,37,36,39,41,0,665,670,593,0
4767.10,37,36,39,40,0,675,665,587,0
4767.67,37,37,40,40,0,668,666,591,0
4768.23,37,36,40,40,0,668,670,592,0
4768.80,37,36,40,39,0,665,671,589,0
4769.36,37,36,40,40,0,673,671,586,0
4769.93,38,36,39,39,0,676,667,585,0
4770.49,38,36,39,40,0,672,668,586,0
4771.06,38,37,39,41,0,667,674,593,0
4771.62,37,37,38,40,0,668,668,587,0
4772.19,37,36,40,40,0,669,667,586,0
4772.76,37,36,41,40,0,674,666,588,0
4773.33,38,37,39,40,0,666,673,586,0
4773.89,37,36,39,40,0,674,671,591,0
4774.46,37,36,39,40,0,676,671,587,0
4775.03,37,37,40,39,0,669,673,592,0
4775.59,37,37,39,39,0,674,669,587,0
4776.16,38,36,40,40,0,673,672,591,0
4776.72,37,37,40,40,0,674,667,587,0
4777.29,37,36,40,40,0,670,676,592,0
4777.85,38,37,40,41,0,667,670,592,0
4778.42,38,37,39,40,0,669,665,586,0
4778.99,38,37,39,40,0,669,670,594,0
4779.56,38,37,39,40,0,670,673,593,0
4780.12,38,37,38,40,0,667,675,587,0
4780.68,37,36,41,40,0,666,668,592,0
4781.25,37,37,40,40,0,666,666,591,0
4781.82,37,36,40,41,0,665,667,592,0
4782.39,38,37,39,41,0,667,673,587,0
4782.96,37,36,40,40,0,666,667,591,0
4783.52,38,36,40,40,0,674,675,593,0
4784.09,38,36,39,41,0,662,673,586,0
4784.65,37,36,40,41,0,676,671,587,0
4785.22,37,38,40,40,0,669,666,591,0
4785.78,37,37,39,40,0,668,668,592,0
4786.35,37,36,40,40,0,676,673,590,0
4786.91,37,36,40,40,0,669,675,592,0
4787.48,37,37,40,40,0,668,667,587,0
4788.04,37,37,41,39,0,676,674,586,0
4788.60,37,36,39,40,0,669,672,588,0
4789.17,38,37,40,40,0,667,674,592,0
4789.74,38,37,40,40,0,674,676,592,0
4790.30,37,36,39,41,0,662,669,592,0
4790.87,38,36,39,40,0,666,666,588,0
4791.44,37,37,40,40,0,675,675,590,0
4792.01,37,36,40,40,0,668,668,587,0
4792.57,37,36,40,40,0,672,667,587,0
4793.14,37,36,39,40,0,673,669,593,0
4793.70,37,36,41,41,0,666,669,588,0
4794.27,37,37,40,40,0,676,673,588,0
4794.83,37,36,38,40,0,671,674,588,0
4795.40,36,36,40,40,0,671,667,588,0
4795.97,37,36,39,39,0,672,670,586,0
4796.54,37,36,39,40,0,667,667,587,0
4797.10,37,35,40,40,0,675,673,586,0
4797.67,37,37,40,40,0,670,669,592,0
4798.24,37,36,40,40,0,669,671,588,0
4798.81,37,37,40,39,0,675,674,592,0
4799.37,37,37,38,40,0,670,669,591,0
4799.94,37,36,39,40,0,674,673,593,0
4800.51,36,36,40,40,0,674,672,587,0
4801.07,37,36,40,40,0,673,673,589,0
4801.64,37,36,40,40,0,671,667,587,0
4802.20,37,35,39,41,0,670,668,586,0
4802.77,37,36,40,39,0,674,667,588,0
4803.33,37,37,40,39,0,670,678,589,0
4803.91,37,35,40,40,0,671,675,592,0
4804.47,38,36,40,41,0,666,675,592,0
4805.04,37,36,39,40,0,668,672,593,0
4805.60,38,36,40,40,0,676,670,588,0
4806.17,38,36,38,39,0,670,677,590,0
4806.74,37,37,39,40,0,675,671,587,0
4807.30,37,36,40,40,0,672,668,587,0
4807.87,38,37,39,40,0,667,668,591,0
4808.43,37,36,40,39,0,666,666,586,0
4809.00,37,36,41,39,0,673,667,591,0
4809.56,36,37,38,40,0,675,668,586,0
4810.13,36,36,40,40,0,672,669,592,0
4810.70,38,36,40,39,0,673,667,592,0
4811.27,38,36,40,41,0,672,673,587,0
4811.83,37,36,40,40,0,668,667,586,0
4812.40,37,37,39,39,0,666,669,586,0
4812.96,37,36,40,41,0,671,667,589,0
4813.52,37,37,39,40,0,674,673,587,0
4814.09,38,36,39,40,0,668,671,592,0
4814.65,37,36,39,38,0,669,669,594,0
4815.22,37,36,39,40,0,667,669,587,0
4815.78,37,36,39,40,0,671,674,591,0
4816.35,37,37,40,39,0,666,663,589,0
4816.92,37,37,40,40,0,672,668,588,0
4817.49,37,37,39,39,0,675,671,589,0
4818.05,38,37,40,41,0,675,666,592,0
4818.62,38,37,40,40,0,666,666,591,0
4819.18,37,37,39,40,0,671,667,591,0
4819.75,37,36,39,40,0,673,669,591,0
4820.32,37,37,39,40,0,674,674,587,0
4820.88,37,37,40,40,0,675,666,585,0
4821.45,36,36,40,41,0,667,675,593,0
4822.02,38,37,39,39,0,668,675,591,0
4822.58,36,37,41,40,0,667,672,590,0
4823.15,37,36,38,40,0,676,671,589,0
4823.72,37,37,39,41,0,673,671,587,0
4824.28,38,36,40,41,0,666,670,592,0
4824.85,37,36,40,40,0,666,672,590,0
4825.41,37,36,40,41,0,674,674,586,0
4825.99,38,36,40,41,0,675,671,593,0
4826.55,37,36,38,40,0,673,670,588,0
4827.12,37,37,39,39,0,668,665,587,0
4827.68,38,37,40,41,0,666,666,587,0
4828.25,37,36,39,39,0,673,668,585,0
4828.81,38,36,40,40,0,668,666,588,0
4829.38,37,37,39,40,0,668,675,592,0
4829.95,37,37,40,39,0,665,667,589,0
4830.51,36,37,39,40,0,669,675,593,0
4831.08,38,36,40,40,0,667,669,586,0
4831.65,37,36,40,40,0,677,668,592,0
4832.21,37,38,39,40,0,668,667,589,0
4832.78,37,37,40,41,0,665,675,589,0
4833.34,37,36,39,40,0,676,673,586,0
4833.91,37,37,38,40,0,666,667,587,0
4834.49,37,37,40,39,0,673,668,587,0
4835.05,36,37,40,39,0,667,667,586,0
4835.62,37,37,40,40,0,671,667,587,0
4836.18,38,36,39,40,0,673,674,588,0
4836.75,37,37,39,39,0,668,669,589,0
4837.31,38,37,39,40,0,672,667,589,0
4837.88,37,37,39,40,0,670,674,592,0
4838.45,37,36,40,41,0,667,674,593,0
4839.02,38,35,39,40,0,671,666,586,0
4839.59,38,37,40,40,0,670,669,591,0
4840.15,38,36,40,40,0,673,674,594,0
4840.72,37,35,39,41,0,666,667,588,0
4841.28,37,36,39,40,0,667,666,593,0
4841.85,37,36,39,39,0,674,671,588,0
4842.41,37,37,38,40,0,672,671,587,0
4842.98,38,36,41,41,0,674,666,587,0
4843.54,37,37,40,40,0,667,668,587,0
4844.10,38,36,39,41,0,673,675,588,0
4844.67,37,36,38,40,0,671,669,592,0
4845.23,38,37,39,40,0,676,665,587,0
4845.80,38,37,40,40,0,674,675,590,0
4846.36,37,37,40,40,0,671,672,586,0
4846.94,38,36,40,40,0,674,676,587,0
4847.50,38,38,40,40,0,679,673,589,0
4848.07,38,36,40,41,0,671,666,592,0
4848.64,36,37,40,40,0,668,665,590,0
4849.20,37,36,40,40,0,670,668,586,0
4849.77,37,35,40,40,0,669,670,588,0
4850.33,37,37,39,39,0,666,666,594,0
4850.90,37,36,40,39,0,672,672,586,0
4851.47,37,36,39,39,0,675,675,593,0
4852.04,37,36,40,40,0,669,671,592,0
4852.61,38,37,39,40,0,669,676,593,0
4853.18,38,36,40,40,0,671,671,586,0
4853.75,37,36,40,40,0,675,670,589,0
4854.32,38,37,39,40,0,675,668,589,0
4854.88,38,36,39,40,0,668,667,592,0
4855.45,37,36,40,40,0,674,668,591,0
4856.01,37,36,39,40,0,675,667,587,0
4856.58,36,37,40,39,0,665,667,588,0
4857.14,38,37,40,40,0,669,665,586,0
4857.71,37,36,39,40,0,675,667,587,0
4858.27,37,36,40,40,0,673,672,590,0
4858.84,38,36,39,40,0,677,674,587,0
4859.41,37,36,41,39,0,668,675,587,0
4859.98,37,36,39,39,0,676,670,586,0
4860.54,37,36,40,40,0,676,666,588,0
4861.11,37,36,39,40,0,676,673,591,0
4861.67,38,36,39,40,0,669,671,589,0
4862.24,37,36,40,39,0,676,675,589,0
4862.80,37,36,39,40,0,669,668,593,0
4863.37,38,36,40,41,0,673,674,588,0
4863.93,38,36,40,40,0,668,669,589,0
4864.50,38,36,40,40,0,669,674,594,0
4865.06,37,36,40,40,0,673,665,594,0
4865.63,37,37,39,40,0,674,675,594,0
4866.20,38,36,40,40,0,673,667,594,0
4866.76,37,36,39,40,0,669,668,586,0
4867.33,37,37,38,39,0,665,666,586,0
4867.90,37,36,39,39,0,667,669,592,0
4868.46,37,37,40,39,0,668,677,589,0
4869.03,37,37,39,40,0,674,675,587,0
4869.60,37,36,39,39,0,674,669,593,0
4870.17,38,37,39,40,0,676,673,587,0
4870.73,37,37,40,40,0,676,667,587,0
4871.30,38,37,39,40,0,669,674,588,0
4871.86,38,36,40,40,0,663,666,592,0
4872.43,38,37,39,40,0,670,670,594,0
4873.00,38,36,40,40,0,668,666,590,0
4873.56,37,35,39,40,0,667,674,591,0
4874.12,37,36,40,39,0,675,666,587,0
4874.70,37,37,40,39,0,674,673,592,0
4875.26,36,36,39,40,0,668,677,588,0
4875.83,38,36,39,41,0,673,667,593,0
4876.40,36,36,39,40,0,671,669,593,0
4876.96,37,36,40,40,0,669,672,588,0
4877.53,36,37,39,40,0,666,667,594,0
4878.10,38,35,39,40,0,667,667,586,0
4878.67,38,36,38,40,0,676,674,587,0
4879.24,37,36,39,40,0,667,676,588,0
4879.80,37,36,40,39,0,675,673,594,0
4880.36,38,35,40,40,0,676,668,592,0
4880.93,38,37,39,41,0,665,671,588,0
4881.49,36,35,38,41,0,667,673,594,0
4882.06,38,36,39,40,0,664,667,592,0
4882.62,37,36,40,41,0,671,674,593,0
4883.19,37,37,38,41,0,672,667,587,0
4883.75,37,37,40,40,0,670,673,592,0
4884.31,37,37,40,40,0,672,669,586,0
4884.88,38,36,39,40,0,674,674,593,0
4885.44,38,37,40,40,0,667,674,588,0
4886.01,38,36,39,41,0,669,669,593,0
4886.57,37,36,40,41,0,667,674,586,0
4887.14,38,36,38,41,0,674,674,588,0
4887.71,38,37,39,41,0,672,668,592,0
4888.28,39,38,39,40,0,667,668,591,0
4888.84,37,37,39,38,0,669,672,592,0
4889.41,36,36,40,39,0,669,667,591,0
4889.97,38,36,39,40,0,674,677,593,0
4890.54,37,37,40,39,0,674,670,586,0
4891.10,37,36,39,41,0,667,675,591,0
4891.67,37,36,39,41,0,668,666,593,0
4892.23,37,37,39,40,0,674,670,588,0
4892.80,38,37,39,41,0,675,671,591,0
4893.36,38,37,39,41,0,667,670,592,0
4893.92,37,36,39,39,0,670,673,592,0
4894.49,37,36,40,40,0,669,667,593,0
4895.05,37,36,38,40,0,674,674,588,0
4895.62,37,36,41,39,0,674,675,587,0
4896.19,38,36,40,40,0,674,667,588,0
4896.76,37,37,40,41,0,666,667,591,0
4897.33,37,35,39,40,0,676,678,592,0
4897.89,37,36,40,39,0,669,672,588,0
4898.46,37,37,40,40,0,669,666,587,0
4899.02,37,36,41,40,0,673,666,586,0
4899.58,36,35,39,39,0,665,674,592,0
4900.15,37,37,40,40,0,670,667,586,0
4900.71,37,36,40,41,0,666,664,589,0
4901.28,37,36,40,40,0,674,674,594,0
4901.85,37,36,40,40,0,669,671,592,0
4902.42,37,36,40,40,0,668,667,592,0
4902.98,38,36,39,39,0,673,667,592,0
4903.55,38,37,38,40,0,674,674,588,0
4904.12,39,37,40,41,0,669,665,587,0
4904.68,37,36,40,41,0,666,673,592,0
4905.25,38,37,39,39,0,664,675,591,0
4905.81,37,36,39,40,0,669,667,587,0
4906.38,37,35,40,39,0,675,671,593,0
4906.94,37,37,39,40,0,674,674,591,0
4907.51,38,37,39,39,0,669,665,592,0
4908.07,37,37,40,40,0,669,666,586,0
4908.64,38,37,40,39,0,676,669,589,0
4909.21,38,36,39,40,0,666,668,593,0
4909.78,38,36,40,40,0,670,671,592,0
4910.34,38,36,39,39,0,665,670,588,0
4910.91,38,36,39,40,0,672,669,593,0
4911.47,37,36,40,39,0,669,665,587,0
4912.03,38,36,40,40,0,669,673,589,0
4912.60,37,37,39,40,0,674,673,587,0
4913.17,36,37,39,40,0,673,675,587,0
4913.73,37,38,39,40,0,674,674,594,0
4914.30,36,37,38,40,0,668,674,592,0
4914.87,38,37,39,40,0,670,666,591,0
4915.44,37,36,40,40,0,672,675,589,0
4916.00,37,37,39,41,0,666,666,588,0
4916.56,37,36,38,39,0,667,666,588,0
4917.13,37,37,39,40,0,672,672,586,0
4917.70,37,37,40,40,0,668,665,587,0
4918.26,37,37,39,40,0,674,674,586,0
4918.82,38,35,40,40,0,675,675,588,0
4919.39,37,36,39,41,0,670,674,590,0
4919.95,37,37,40,41,0,676,673,594,0
4920.52,38,36,39,41,0,672,669,593,0
4921.08,37,35,40,40,0,669,667,586,0
4921.65,39,37,39,40,0,671,673,590,0
4922.21,37,36,38,40,0,669,676,593,0
4922.78,37,36,40,40,0,670,666,586,0
4923.35,37,36,40,40,0,669,669,586,0
4923.92,37,37,40,41,0,674,674,588,0
4924.49,37,36,40,40,0,666,673,593,0
4925.05,38,37,40,39,0,674,675,586,0
4925.62,37,38,38,40,0,673,674,593,0
4926.19,38,36,39,40,0,675,674,588,0
4926.76,37,36,40,40,0,672,674,587,0
4927.32,37,36,39,40,0,669,676,593,0
4927.89,38,36,40,40,0,670,671,588,0
4928.45,37,36,40,40,0,675,668,588,0
4929.02,38,38,40,40,0,669,673,588,0
4929.58,37,36,39,39,0,670,674,592,0
4930.15,37,37,39,38,0,668,668,586,0
4930.71,37,37,39,40,0,672,667,587,0
4931.28,37,37,40,40,0,673,667,589,0
4931.84,37,36,39,41,0,673,671,587,0
4932.41,38,37,38,41,0,675,669,594,0
4932.98,38,37,39,40,0,668,667,594,0
4933.55,38,37,40,41,0,673,667,588,0
4934.11,37,36,40,41,0,666,670,591,0
4934.68,38,36,40,40,0,674,674,585,0
4935.24,37,36,40,40,0,674,668,591,0
4935.81,37,36,40,40,0,676,674,587,0
4936.37,37,37,40,40,0,668,673,587,0
4936.94,38,35,39,40,0,673,675,588,0
4937.50,37,36,40,40,0,668,668,593,0
4938.07,37,35,40,40,0,668,671,588,0
4938.64,38,36,40,40,0,675,667,594,0
4939.21,37,35,40,40,0,673,669,593,0
4939.77,37,36,39,40,0,671,672,592,0
4940.34,37,35,40,41,0,673,673,588,0
4940.90,37,36,40,39,0,667,673,589,0
4941.47,38,36,39,39,0,667,675,588,0
4942.03,38,37,39,40,0,674,670,587,0
4942.60,37,36,39,41,0,675,674,590,0
4943.16,37,37,40,41,0,671,664,587,0
4943.73,37,36,38,40,0,666,669,588,0
4944.30,37,36,40,40,0,667,667,585,0
4944.87,37,36,40,40,0,669,667,588,0
4945.43,37,37,40,40,0,673,675,590,0
4946.00,36,36,39,40,0,676,668,594,0
4946.56,36,36,39,40,0,668,670,592,0
4947.13,39,37,39,40,0,674,669,588,0
4947.69,37,35,39,39,0,676,669,593,0
4948.26,37,36,40,39,0,676,673,587,0
4948.82,38,36,40,40,0,668,671,592,0
4949.39,37,36,39,40,0,669,668,593,0
4949.96,38,37,38,40,0,666,674,587,0
4950.53,37,36,40,40,0,670,666,586,0
4951.09,37,36,40,40,0,673,674,587,0
4951.66,37,36,40,40,0,666,665,591,0
4952.22,36,36,39,40,0,676,676,589,0
4952.79,37,37,40,40,0,670,669,593,0
4953.35,37,36,40,40,0,678,672,592,0
4953.92,37,37,39,40,0,669,674,587,0
4954.48,38,36,39,40,0,667,666,592,0
4955.06,37,37,39,40,0,674,676,587,0
4955.62,38,36,40,40,0,668,669,593,0
4956.19,38,36,39,40,0,667,666,588,0
4956.76,37,36,40,40,0,667,672,592,0
4957.32,37,35,40,40,0,666,672,594,0
4957.88,37,36,40,40,0,674,674,590,0
4958.45,37,37,40,40,0,669,664,586,0
4959.01,38,36,39,40,0,674,667,587,0
4959.58,38,37,40,40,0,673,673,593,0
4960.15,37,36,40,41,0,669,674,587,0
4960.72,37,36,41,40,0,674,675,592,0
4961.29,38,36,39,40,0,671,673,588,0
4961.85,36,36,40,40,0,670,665,594,0
4962.42,37,36,39,41,0,669,667,589,0
4962.98,37,36,39,38,0,669,674,593,0
4963.55,37,37,39,40,0,669,667,591,0
4964.11,38,35,41,41,0,671,669,594,0
4964.68,37,36,40,39,0,674,668,588,0
4965.24,37,36,40,40,0,675,673,593,0
4965.81,38,36,39,40,0,671,676,594,0
4966.38,38,37,39,40,0,674,669,586,0
4966.94,36,36,40,40,0,675,674,594,0
4967.51,37,36,40,39,0,666,666,589,0
4968.07,37,35,40,41,0,669,674,592,0
4968.64,37,36,40,40,0,669,668,587,0
4969.21,39,36,38,40,0,667,674,595,0
4969.77,37,36,40,40,0,665,675,586,0
4970.33,38,37,40,40,0,669,669,588,0
4970.90,38,36,40,40,0,668,666,588,0
4971.46,37,36,39,40,0,668,667,593,0
4972.03,37,37,39,40,0,672,671,594,0
4972.59,37,36,40,40,0,674,669,594,0
4973.16,38,37,39,40,0,668,669,594,0
4973.72,37,37,39,40,0,677,671,590,0
4974.28,38,37,40,40,0,673,673,588,0
4974.85,37,36,39,42,0,675,675,592,0
4975.41,37,37,40,40,0,671,670,591,0
4975.98,37,36,39,40,0,669,667,589,0
4976.54,37,36,38,40,0,667,672,587,0
4977.10,37,37,41,40,0,671,675,587,0
4977.67,37,35,38,41,0,671,668,593,0
4978.23,36,36,40,40,0,676,673,592,0
4978.80,38,36,40,39,0,667,677,588,0
4979.36,38,37,40,40,0,672,673,587,0
4979.92,38,36,40,41,0,669,670,588,0
4980.49,37,35,40,40,0,670,669,593,0
4981.05,37,37,39,40,0,671,672,593,0
4981.62,37,37,40,40,0,669,672,589,0
4982.19,38,36,39,40,0,669,673,591,0
4982.76,38,36,40,39,0,666,674,593,0
4983.33,39,36,39,39,0,671,671,593,0
4983.89,37,37,40,40,0,669,668,593,0
4984.46,37,36,39,40,0,669,668,592,0
4985.03,37,37,40,40,0,670,664,592,0
4985.60,37,36,39,39,0,676,673,589,0
4986.17,38,37,40,40,0,668,668,586,0
4986.73,37,36,38,39,0,666,671,591,0
4987.30,37,36,39,40,0,673,666,587,0
4987.86,38,36,40,40,0,667,667,587,0
4988.43,37,36,38,40,0,668,676,592,0
4989.00,37,37,39,40,0,675,673,589,0
4989.57,36,37,39,40,0,674,667,593,0
4990.13,37,36,40,40,0,661,674,594,0
4990.70,38,37,39,39,0,670,675,590,0
4991.26,38,36,39,40,0,669,668,594,0
4991.83,37,36,40,39,0,668,668,587,0
4992.39,37,37,39,41,0,668,672,587,0
4992.96,38,37,40,40,0,676,665,594,0
4993.52,36,36,39,41,0,669,671,594,0
4994.08,38,37,39,40,0,676,666,588,0
4994.65,37,36,39,40,0,668,666,591,0
4995.21,38,35,39,40,0,674,665,590,0
4995.78,38,36,40,40,0,670,667,589,0
4996.35,37,36,40,41,0,666,672,588,0
4996.92,38,36,40,40,0,676,673,589,0
4997.48,38,35,38,39,0,675,666,589,0
4998.05,38,36,40,41,0,672,670,588,0
4998.61,37,37,40,40,0,676,677,593,0
4999.18,37,38,40,40,0,669,671,593,0
4999.75,38,36,38,40,0,673,667,586,0
5000.31,36,36,39,41,0,668,666,590,0
5000.88,37,35,40,40,0,669,673,584,0
5001.45,38,36,40,40,0,666,666,594,0
5002.02,37,36,40,40,0,666,672,589,0
5002.59,37,36,38,40,0,667,666,587,0
5003.15,37,36,40,39,0,675,672,586,0
5003.72,37,36,38,41,0,677,670,590,0
5004.29,38,36,39,40,0,674,669,594,0
5004.86,37,36,40,41,0,675,674,592,0
1 t_s lid_ir_1 lid_ir_2 lid_ir_3 lid_ir_4 hv_current water_1 water_2 pwr_temp laser_on_sampled
2 4665.89 37 37 40 40 0 672 669 586 0
3 4666.45 37 36 40 40 0 674 674 586 0
4 4667.01 37 36 40 40 0 668 673 586 0
5 4667.57 37 36 39 40 0 667 669 593 0
6 4668.14 36 36 39 40 0 667 674 592 0
7 4668.70 38 36 39 40 0 668 674 593 0
8 4669.27 37 35 38 41 0 665 669 591 0
9 4669.83 39 37 39 39 0 667 666 592 0
10 4670.40 38 36 40 40 0 674 667 589 0
11 4670.96 37 36 38 41 0 668 667 593 0
12 4671.52 37 37 41 40 0 671 674 590 0
13 4672.09 38 36 41 40 0 671 666 589 0
14 4672.65 37 36 40 40 0 669 666 590 0
15 4673.22 37 36 38 41 0 669 676 593 0
16 4673.78 38 37 40 41 0 675 674 590 0
17 4674.35 36 38 40 40 0 669 667 590 0
18 4674.91 37 36 39 40 0 663 667 590 0
19 4675.48 38 38 39 40 0 667 666 592 0
20 4676.05 38 36 40 40 0 666 670 587 0
21 4676.62 38 36 38 39 0 672 667 586 0
22 4677.18 38 36 38 40 0 670 667 589 0
23 4677.75 37 36 39 40 0 666 664 592 0
24 4678.31 36 37 40 39 0 665 672 593 0
25 4678.88 37 36 40 40 0 667 669 593 0
26 4679.44 37 36 40 40 0 674 678 591 0
27 4680.01 37 36 40 39 0 667 665 587 0
28 4680.57 37 36 39 38 0 676 677 587 0
29 4681.14 37 35 40 40 0 675 670 587 0
30 4681.70 38 37 39 41 0 672 671 593 0
31 4682.27 36 36 39 40 0 675 671 592 0
32 4682.84 38 37 38 41 0 675 667 592 0
33 4683.40 37 36 38 40 0 667 666 593 0
34 4683.97 36 36 40 40 0 668 666 591 0
35 4684.53 37 36 39 40 0 669 669 594 0
36 4685.10 38 36 40 40 0 674 667 592 0
37 4685.66 37 36 39 39 0 673 669 586 0
38 4686.23 37 37 40 40 0 668 667 586 0
39 4686.79 36 36 39 39 0 668 666 593 0
40 4687.36 37 37 39 40 0 673 666 586 0
41 4687.92 37 36 40 41 0 666 669 593 0
42 4688.49 37 37 39 40 0 674 666 587 0
43 4689.06 36 36 39 41 0 666 674 586 0
44 4689.63 37 37 40 40 0 673 675 588 0
45 4690.19 37 36 40 40 0 662 674 593 0
46 4690.76 38 35 39 40 0 673 673 586 0
47 4691.32 37 37 40 41 0 671 671 593 0
48 4691.89 38 36 40 40 0 673 665 592 0
49 4692.45 37 36 40 40 0 674 672 591 0
50 4693.02 37 36 40 40 0 675 677 587 0
51 4693.58 38 37 40 40 0 677 668 592 0
52 4694.15 37 36 40 39 0 667 675 587 0
53 4694.71 37 36 40 39 0 676 675 593 0
54 4695.27 37 37 40 40 0 666 671 588 0
55 4695.84 38 36 40 40 0 674 673 587 0
56 4696.40 37 36 40 40 0 670 672 590 0
57 4696.97 37 36 38 40 0 669 674 588 0
58 4697.53 37 37 39 40 0 676 674 589 0
59 4698.10 38 36 40 39 0 677 669 591 0
60 4698.67 37 38 39 38 0 673 676 593 0
61 4699.23 38 36 39 40 0 670 675 587 0
62 4699.80 38 36 40 40 0 675 671 588 0
63 4700.37 38 36 40 40 0 673 668 583 0
64 4700.93 37 37 39 39 0 671 670 591 0
65 4701.50 37 35 41 39 0 675 674 587 0
66 4702.06 37 37 39 40 0 668 675 588 0
67 4702.63 37 36 39 40 0 669 666 591 0
68 4703.19 37 37 39 41 0 667 666 588 0
69 4703.75 36 36 39 40 0 672 667 588 0
70 4704.32 37 36 40 38 0 671 673 587 0
71 4704.88 37 36 39 40 0 676 673 586 0
72 4705.44 38 36 38 40 0 676 667 586 0
73 4706.01 37 36 40 40 0 670 669 587 0
74 4706.58 36 36 40 39 0 677 673 586 0
75 4707.15 37 37 40 41 0 674 670 589 0
76 4707.72 37 36 40 41 0 672 668 593 0
77 4708.28 38 37 39 40 0 669 665 591 0
78 4708.85 37 35 40 41 0 667 672 586 0
79 4709.41 37 36 40 41 0 671 674 586 0
80 4709.98 37 37 40 40 0 675 667 587 0
81 4710.54 37 37 39 41 0 666 667 590 0
82 4711.11 38 37 40 40 0 667 666 591 0
83 4711.67 37 36 38 40 0 670 668 586 0
84 4712.23 37 36 38 41 0 667 667 593 0
85 4712.80 38 36 39 41 0 666 673 592 0
86 4713.36 37 37 39 40 0 675 669 592 0
87 4713.93 37 36 40 39 0 671 672 589 0
88 4714.49 38 37 41 40 0 672 666 587 0
89 4715.05 37 36 38 39 0 666 672 586 0
90 4715.62 37 36 40 39 0 667 671 592 0
91 4716.18 39 36 40 40 0 665 665 590 0
92 4716.75 38 37 40 41 0 673 665 589 0
93 4717.31 36 36 39 40 0 678 673 593 0
94 4717.87 37 36 39 39 0 674 665 589 0
95 4718.44 38 37 40 42 0 668 669 593 0
96 4719.00 38 36 40 40 0 671 674 586 0
97 4719.57 37 36 39 40 0 668 667 592 0
98 4720.13 37 36 40 40 0 673 668 590 0
99 4720.69 38 37 40 40 0 674 667 592 0
100 4721.26 37 36 41 40 0 664 672 591 0
101 4721.83 37 37 39 40 0 671 669 588 0
102 4722.40 36 37 40 39 0 665 666 587 0
103 4722.96 38 37 39 40 0 676 675 586 0
104 4723.53 37 37 40 41 0 672 667 591 0
105 4724.10 38 36 39 40 0 669 668 594 0
106 4724.66 37 37 39 41 0 666 671 586 0
107 4725.23 37 37 40 40 0 673 674 586 0
108 4725.79 38 37 39 41 0 676 674 591 0
109 4726.36 37 37 40 41 0 675 670 586 0
110 4726.92 37 36 38 40 0 675 669 592 0
111 4727.49 37 37 39 40 0 673 676 590 0
112 4728.05 38 36 40 39 0 669 669 588 0
113 4728.62 37 36 40 40 0 676 674 586 0
114 4729.19 37 36 40 40 0 666 674 586 0
115 4729.75 37 36 38 41 0 667 674 587 0
116 4730.32 37 36 39 39 0 669 670 590 0
117 4730.89 38 36 39 41 0 668 666 594 0
118 4731.45 38 37 40 40 0 673 672 587 0
119 4732.02 38 36 39 40 0 674 665 587 0
120 4732.58 37 35 39 41 0 676 672 588 0
121 4733.14 38 35 39 40 0 677 669 589 0
122 4733.71 38 36 40 40 0 674 667 592 0
123 4734.27 36 36 39 39 0 673 666 593 0
124 4734.84 37 36 38 39 0 667 669 587 0
125 4735.40 38 37 39 40 0 669 666 593 0
126 4735.96 38 36 40 40 0 668 674 587 0
127 4736.53 37 36 38 40 0 667 675 587 0
128 4737.09 38 37 40 40 0 674 668 586 0
129 4737.66 38 36 39 41 0 667 673 588 0
130 4738.22 37 37 40 40 0 674 672 593 0
131 4738.78 37 36 39 40 0 670 667 587 0
132 4739.35 36 36 39 40 0 668 669 593 0
133 4739.92 37 37 40 40 0 667 671 591 0
134 4740.48 37 37 39 39 0 668 674 590 0
135 4741.05 37 36 39 39 0 668 666 586 0
136 4741.62 37 36 40 40 0 674 675 592 0
137 4742.18 37 36 39 39 0 670 676 586 0
138 4742.75 38 36 39 40 0 669 666 591 0
139 4743.32 37 36 40 40 0 675 674 587 0
140 4743.88 36 37 40 40 0 672 665 587 0
141 4744.45 37 36 39 40 0 674 671 592 0
142 4745.01 37 36 39 40 0 674 669 588 0
143 4745.58 37 36 39 40 0 675 665 587 0
144 4746.15 38 36 40 40 0 673 667 587 0
145 4746.72 37 35 41 40 0 667 665 590 0
146 4747.28 37 37 40 41 0 668 674 594 0
147 4747.85 38 36 39 41 0 668 674 588 0
148 4748.42 38 36 39 41 0 667 668 587 0
149 4748.99 36 37 39 39 0 674 674 586 0
150 4749.56 37 36 39 41 0 674 670 593 0
151 4750.12 37 36 40 40 0 675 672 592 0
152 4750.69 37 37 39 39 0 670 668 589 0
153 4751.25 38 37 39 40 0 672 670 590 0
154 4751.82 37 36 41 39 0 667 666 591 0
155 4752.38 38 37 39 40 0 669 666 587 0
156 4752.95 37 36 39 40 0 669 666 593 0
157 4753.51 38 36 39 40 0 676 669 592 0
158 4754.08 37 37 39 40 0 668 667 587 0
159 4754.65 38 35 38 40 0 667 670 594 0
160 4755.22 37 36 39 39 0 677 673 587 0
161 4755.79 38 36 39 40 0 672 666 587 0
162 4756.35 37 36 39 41 0 670 671 587 0
163 4756.92 38 36 39 41 0 675 669 593 0
164 4757.48 37 36 39 39 0 675 674 588 0
165 4758.05 37 36 39 40 0 672 674 593 0
166 4758.61 37 36 39 40 0 674 665 586 0
167 4759.18 37 37 39 39 0 673 669 588 0
168 4759.75 37 35 39 40 0 674 669 585 0
169 4760.32 37 37 40 39 0 671 673 587 0
170 4760.88 38 37 39 40 0 674 673 592 0
171 4761.45 38 36 39 40 0 673 673 591 0
172 4762.01 37 36 39 41 0 674 673 592 0
173 4762.58 37 36 39 41 0 666 672 589 0
174 4763.14 39 37 39 40 0 665 669 593 0
175 4763.70 37 36 40 40 0 673 675 587 0
176 4764.27 36 36 39 40 0 668 670 585 0
177 4764.83 37 36 39 40 0 668 675 587 0
178 4765.40 37 37 40 40 0 667 664 592 0
179 4765.97 38 37 40 40 0 670 676 593 0
180 4766.54 37 36 39 41 0 665 670 593 0
181 4767.10 37 36 39 40 0 675 665 587 0
182 4767.67 37 37 40 40 0 668 666 591 0
183 4768.23 37 36 40 40 0 668 670 592 0
184 4768.80 37 36 40 39 0 665 671 589 0
185 4769.36 37 36 40 40 0 673 671 586 0
186 4769.93 38 36 39 39 0 676 667 585 0
187 4770.49 38 36 39 40 0 672 668 586 0
188 4771.06 38 37 39 41 0 667 674 593 0
189 4771.62 37 37 38 40 0 668 668 587 0
190 4772.19 37 36 40 40 0 669 667 586 0
191 4772.76 37 36 41 40 0 674 666 588 0
192 4773.33 38 37 39 40 0 666 673 586 0
193 4773.89 37 36 39 40 0 674 671 591 0
194 4774.46 37 36 39 40 0 676 671 587 0
195 4775.03 37 37 40 39 0 669 673 592 0
196 4775.59 37 37 39 39 0 674 669 587 0
197 4776.16 38 36 40 40 0 673 672 591 0
198 4776.72 37 37 40 40 0 674 667 587 0
199 4777.29 37 36 40 40 0 670 676 592 0
200 4777.85 38 37 40 41 0 667 670 592 0
201 4778.42 38 37 39 40 0 669 665 586 0
202 4778.99 38 37 39 40 0 669 670 594 0
203 4779.56 38 37 39 40 0 670 673 593 0
204 4780.12 38 37 38 40 0 667 675 587 0
205 4780.68 37 36 41 40 0 666 668 592 0
206 4781.25 37 37 40 40 0 666 666 591 0
207 4781.82 37 36 40 41 0 665 667 592 0
208 4782.39 38 37 39 41 0 667 673 587 0
209 4782.96 37 36 40 40 0 666 667 591 0
210 4783.52 38 36 40 40 0 674 675 593 0
211 4784.09 38 36 39 41 0 662 673 586 0
212 4784.65 37 36 40 41 0 676 671 587 0
213 4785.22 37 38 40 40 0 669 666 591 0
214 4785.78 37 37 39 40 0 668 668 592 0
215 4786.35 37 36 40 40 0 676 673 590 0
216 4786.91 37 36 40 40 0 669 675 592 0
217 4787.48 37 37 40 40 0 668 667 587 0
218 4788.04 37 37 41 39 0 676 674 586 0
219 4788.60 37 36 39 40 0 669 672 588 0
220 4789.17 38 37 40 40 0 667 674 592 0
221 4789.74 38 37 40 40 0 674 676 592 0
222 4790.30 37 36 39 41 0 662 669 592 0
223 4790.87 38 36 39 40 0 666 666 588 0
224 4791.44 37 37 40 40 0 675 675 590 0
225 4792.01 37 36 40 40 0 668 668 587 0
226 4792.57 37 36 40 40 0 672 667 587 0
227 4793.14 37 36 39 40 0 673 669 593 0
228 4793.70 37 36 41 41 0 666 669 588 0
229 4794.27 37 37 40 40 0 676 673 588 0
230 4794.83 37 36 38 40 0 671 674 588 0
231 4795.40 36 36 40 40 0 671 667 588 0
232 4795.97 37 36 39 39 0 672 670 586 0
233 4796.54 37 36 39 40 0 667 667 587 0
234 4797.10 37 35 40 40 0 675 673 586 0
235 4797.67 37 37 40 40 0 670 669 592 0
236 4798.24 37 36 40 40 0 669 671 588 0
237 4798.81 37 37 40 39 0 675 674 592 0
238 4799.37 37 37 38 40 0 670 669 591 0
239 4799.94 37 36 39 40 0 674 673 593 0
240 4800.51 36 36 40 40 0 674 672 587 0
241 4801.07 37 36 40 40 0 673 673 589 0
242 4801.64 37 36 40 40 0 671 667 587 0
243 4802.20 37 35 39 41 0 670 668 586 0
244 4802.77 37 36 40 39 0 674 667 588 0
245 4803.33 37 37 40 39 0 670 678 589 0
246 4803.91 37 35 40 40 0 671 675 592 0
247 4804.47 38 36 40 41 0 666 675 592 0
248 4805.04 37 36 39 40 0 668 672 593 0
249 4805.60 38 36 40 40 0 676 670 588 0
250 4806.17 38 36 38 39 0 670 677 590 0
251 4806.74 37 37 39 40 0 675 671 587 0
252 4807.30 37 36 40 40 0 672 668 587 0
253 4807.87 38 37 39 40 0 667 668 591 0
254 4808.43 37 36 40 39 0 666 666 586 0
255 4809.00 37 36 41 39 0 673 667 591 0
256 4809.56 36 37 38 40 0 675 668 586 0
257 4810.13 36 36 40 40 0 672 669 592 0
258 4810.70 38 36 40 39 0 673 667 592 0
259 4811.27 38 36 40 41 0 672 673 587 0
260 4811.83 37 36 40 40 0 668 667 586 0
261 4812.40 37 37 39 39 0 666 669 586 0
262 4812.96 37 36 40 41 0 671 667 589 0
263 4813.52 37 37 39 40 0 674 673 587 0
264 4814.09 38 36 39 40 0 668 671 592 0
265 4814.65 37 36 39 38 0 669 669 594 0
266 4815.22 37 36 39 40 0 667 669 587 0
267 4815.78 37 36 39 40 0 671 674 591 0
268 4816.35 37 37 40 39 0 666 663 589 0
269 4816.92 37 37 40 40 0 672 668 588 0
270 4817.49 37 37 39 39 0 675 671 589 0
271 4818.05 38 37 40 41 0 675 666 592 0
272 4818.62 38 37 40 40 0 666 666 591 0
273 4819.18 37 37 39 40 0 671 667 591 0
274 4819.75 37 36 39 40 0 673 669 591 0
275 4820.32 37 37 39 40 0 674 674 587 0
276 4820.88 37 37 40 40 0 675 666 585 0
277 4821.45 36 36 40 41 0 667 675 593 0
278 4822.02 38 37 39 39 0 668 675 591 0
279 4822.58 36 37 41 40 0 667 672 590 0
280 4823.15 37 36 38 40 0 676 671 589 0
281 4823.72 37 37 39 41 0 673 671 587 0
282 4824.28 38 36 40 41 0 666 670 592 0
283 4824.85 37 36 40 40 0 666 672 590 0
284 4825.41 37 36 40 41 0 674 674 586 0
285 4825.99 38 36 40 41 0 675 671 593 0
286 4826.55 37 36 38 40 0 673 670 588 0
287 4827.12 37 37 39 39 0 668 665 587 0
288 4827.68 38 37 40 41 0 666 666 587 0
289 4828.25 37 36 39 39 0 673 668 585 0
290 4828.81 38 36 40 40 0 668 666 588 0
291 4829.38 37 37 39 40 0 668 675 592 0
292 4829.95 37 37 40 39 0 665 667 589 0
293 4830.51 36 37 39 40 0 669 675 593 0
294 4831.08 38 36 40 40 0 667 669 586 0
295 4831.65 37 36 40 40 0 677 668 592 0
296 4832.21 37 38 39 40 0 668 667 589 0
297 4832.78 37 37 40 41 0 665 675 589 0
298 4833.34 37 36 39 40 0 676 673 586 0
299 4833.91 37 37 38 40 0 666 667 587 0
300 4834.49 37 37 40 39 0 673 668 587 0
301 4835.05 36 37 40 39 0 667 667 586 0
302 4835.62 37 37 40 40 0 671 667 587 0
303 4836.18 38 36 39 40 0 673 674 588 0
304 4836.75 37 37 39 39 0 668 669 589 0
305 4837.31 38 37 39 40 0 672 667 589 0
306 4837.88 37 37 39 40 0 670 674 592 0
307 4838.45 37 36 40 41 0 667 674 593 0
308 4839.02 38 35 39 40 0 671 666 586 0
309 4839.59 38 37 40 40 0 670 669 591 0
310 4840.15 38 36 40 40 0 673 674 594 0
311 4840.72 37 35 39 41 0 666 667 588 0
312 4841.28 37 36 39 40 0 667 666 593 0
313 4841.85 37 36 39 39 0 674 671 588 0
314 4842.41 37 37 38 40 0 672 671 587 0
315 4842.98 38 36 41 41 0 674 666 587 0
316 4843.54 37 37 40 40 0 667 668 587 0
317 4844.10 38 36 39 41 0 673 675 588 0
318 4844.67 37 36 38 40 0 671 669 592 0
319 4845.23 38 37 39 40 0 676 665 587 0
320 4845.80 38 37 40 40 0 674 675 590 0
321 4846.36 37 37 40 40 0 671 672 586 0
322 4846.94 38 36 40 40 0 674 676 587 0
323 4847.50 38 38 40 40 0 679 673 589 0
324 4848.07 38 36 40 41 0 671 666 592 0
325 4848.64 36 37 40 40 0 668 665 590 0
326 4849.20 37 36 40 40 0 670 668 586 0
327 4849.77 37 35 40 40 0 669 670 588 0
328 4850.33 37 37 39 39 0 666 666 594 0
329 4850.90 37 36 40 39 0 672 672 586 0
330 4851.47 37 36 39 39 0 675 675 593 0
331 4852.04 37 36 40 40 0 669 671 592 0
332 4852.61 38 37 39 40 0 669 676 593 0
333 4853.18 38 36 40 40 0 671 671 586 0
334 4853.75 37 36 40 40 0 675 670 589 0
335 4854.32 38 37 39 40 0 675 668 589 0
336 4854.88 38 36 39 40 0 668 667 592 0
337 4855.45 37 36 40 40 0 674 668 591 0
338 4856.01 37 36 39 40 0 675 667 587 0
339 4856.58 36 37 40 39 0 665 667 588 0
340 4857.14 38 37 40 40 0 669 665 586 0
341 4857.71 37 36 39 40 0 675 667 587 0
342 4858.27 37 36 40 40 0 673 672 590 0
343 4858.84 38 36 39 40 0 677 674 587 0
344 4859.41 37 36 41 39 0 668 675 587 0
345 4859.98 37 36 39 39 0 676 670 586 0
346 4860.54 37 36 40 40 0 676 666 588 0
347 4861.11 37 36 39 40 0 676 673 591 0
348 4861.67 38 36 39 40 0 669 671 589 0
349 4862.24 37 36 40 39 0 676 675 589 0
350 4862.80 37 36 39 40 0 669 668 593 0
351 4863.37 38 36 40 41 0 673 674 588 0
352 4863.93 38 36 40 40 0 668 669 589 0
353 4864.50 38 36 40 40 0 669 674 594 0
354 4865.06 37 36 40 40 0 673 665 594 0
355 4865.63 37 37 39 40 0 674 675 594 0
356 4866.20 38 36 40 40 0 673 667 594 0
357 4866.76 37 36 39 40 0 669 668 586 0
358 4867.33 37 37 38 39 0 665 666 586 0
359 4867.90 37 36 39 39 0 667 669 592 0
360 4868.46 37 37 40 39 0 668 677 589 0
361 4869.03 37 37 39 40 0 674 675 587 0
362 4869.60 37 36 39 39 0 674 669 593 0
363 4870.17 38 37 39 40 0 676 673 587 0
364 4870.73 37 37 40 40 0 676 667 587 0
365 4871.30 38 37 39 40 0 669 674 588 0
366 4871.86 38 36 40 40 0 663 666 592 0
367 4872.43 38 37 39 40 0 670 670 594 0
368 4873.00 38 36 40 40 0 668 666 590 0
369 4873.56 37 35 39 40 0 667 674 591 0
370 4874.12 37 36 40 39 0 675 666 587 0
371 4874.70 37 37 40 39 0 674 673 592 0
372 4875.26 36 36 39 40 0 668 677 588 0
373 4875.83 38 36 39 41 0 673 667 593 0
374 4876.40 36 36 39 40 0 671 669 593 0
375 4876.96 37 36 40 40 0 669 672 588 0
376 4877.53 36 37 39 40 0 666 667 594 0
377 4878.10 38 35 39 40 0 667 667 586 0
378 4878.67 38 36 38 40 0 676 674 587 0
379 4879.24 37 36 39 40 0 667 676 588 0
380 4879.80 37 36 40 39 0 675 673 594 0
381 4880.36 38 35 40 40 0 676 668 592 0
382 4880.93 38 37 39 41 0 665 671 588 0
383 4881.49 36 35 38 41 0 667 673 594 0
384 4882.06 38 36 39 40 0 664 667 592 0
385 4882.62 37 36 40 41 0 671 674 593 0
386 4883.19 37 37 38 41 0 672 667 587 0
387 4883.75 37 37 40 40 0 670 673 592 0
388 4884.31 37 37 40 40 0 672 669 586 0
389 4884.88 38 36 39 40 0 674 674 593 0
390 4885.44 38 37 40 40 0 667 674 588 0
391 4886.01 38 36 39 41 0 669 669 593 0
392 4886.57 37 36 40 41 0 667 674 586 0
393 4887.14 38 36 38 41 0 674 674 588 0
394 4887.71 38 37 39 41 0 672 668 592 0
395 4888.28 39 38 39 40 0 667 668 591 0
396 4888.84 37 37 39 38 0 669 672 592 0
397 4889.41 36 36 40 39 0 669 667 591 0
398 4889.97 38 36 39 40 0 674 677 593 0
399 4890.54 37 37 40 39 0 674 670 586 0
400 4891.10 37 36 39 41 0 667 675 591 0
401 4891.67 37 36 39 41 0 668 666 593 0
402 4892.23 37 37 39 40 0 674 670 588 0
403 4892.80 38 37 39 41 0 675 671 591 0
404 4893.36 38 37 39 41 0 667 670 592 0
405 4893.92 37 36 39 39 0 670 673 592 0
406 4894.49 37 36 40 40 0 669 667 593 0
407 4895.05 37 36 38 40 0 674 674 588 0
408 4895.62 37 36 41 39 0 674 675 587 0
409 4896.19 38 36 40 40 0 674 667 588 0
410 4896.76 37 37 40 41 0 666 667 591 0
411 4897.33 37 35 39 40 0 676 678 592 0
412 4897.89 37 36 40 39 0 669 672 588 0
413 4898.46 37 37 40 40 0 669 666 587 0
414 4899.02 37 36 41 40 0 673 666 586 0
415 4899.58 36 35 39 39 0 665 674 592 0
416 4900.15 37 37 40 40 0 670 667 586 0
417 4900.71 37 36 40 41 0 666 664 589 0
418 4901.28 37 36 40 40 0 674 674 594 0
419 4901.85 37 36 40 40 0 669 671 592 0
420 4902.42 37 36 40 40 0 668 667 592 0
421 4902.98 38 36 39 39 0 673 667 592 0
422 4903.55 38 37 38 40 0 674 674 588 0
423 4904.12 39 37 40 41 0 669 665 587 0
424 4904.68 37 36 40 41 0 666 673 592 0
425 4905.25 38 37 39 39 0 664 675 591 0
426 4905.81 37 36 39 40 0 669 667 587 0
427 4906.38 37 35 40 39 0 675 671 593 0
428 4906.94 37 37 39 40 0 674 674 591 0
429 4907.51 38 37 39 39 0 669 665 592 0
430 4908.07 37 37 40 40 0 669 666 586 0
431 4908.64 38 37 40 39 0 676 669 589 0
432 4909.21 38 36 39 40 0 666 668 593 0
433 4909.78 38 36 40 40 0 670 671 592 0
434 4910.34 38 36 39 39 0 665 670 588 0
435 4910.91 38 36 39 40 0 672 669 593 0
436 4911.47 37 36 40 39 0 669 665 587 0
437 4912.03 38 36 40 40 0 669 673 589 0
438 4912.60 37 37 39 40 0 674 673 587 0
439 4913.17 36 37 39 40 0 673 675 587 0
440 4913.73 37 38 39 40 0 674 674 594 0
441 4914.30 36 37 38 40 0 668 674 592 0
442 4914.87 38 37 39 40 0 670 666 591 0
443 4915.44 37 36 40 40 0 672 675 589 0
444 4916.00 37 37 39 41 0 666 666 588 0
445 4916.56 37 36 38 39 0 667 666 588 0
446 4917.13 37 37 39 40 0 672 672 586 0
447 4917.70 37 37 40 40 0 668 665 587 0
448 4918.26 37 37 39 40 0 674 674 586 0
449 4918.82 38 35 40 40 0 675 675 588 0
450 4919.39 37 36 39 41 0 670 674 590 0
451 4919.95 37 37 40 41 0 676 673 594 0
452 4920.52 38 36 39 41 0 672 669 593 0
453 4921.08 37 35 40 40 0 669 667 586 0
454 4921.65 39 37 39 40 0 671 673 590 0
455 4922.21 37 36 38 40 0 669 676 593 0
456 4922.78 37 36 40 40 0 670 666 586 0
457 4923.35 37 36 40 40 0 669 669 586 0
458 4923.92 37 37 40 41 0 674 674 588 0
459 4924.49 37 36 40 40 0 666 673 593 0
460 4925.05 38 37 40 39 0 674 675 586 0
461 4925.62 37 38 38 40 0 673 674 593 0
462 4926.19 38 36 39 40 0 675 674 588 0
463 4926.76 37 36 40 40 0 672 674 587 0
464 4927.32 37 36 39 40 0 669 676 593 0
465 4927.89 38 36 40 40 0 670 671 588 0
466 4928.45 37 36 40 40 0 675 668 588 0
467 4929.02 38 38 40 40 0 669 673 588 0
468 4929.58 37 36 39 39 0 670 674 592 0
469 4930.15 37 37 39 38 0 668 668 586 0
470 4930.71 37 37 39 40 0 672 667 587 0
471 4931.28 37 37 40 40 0 673 667 589 0
472 4931.84 37 36 39 41 0 673 671 587 0
473 4932.41 38 37 38 41 0 675 669 594 0
474 4932.98 38 37 39 40 0 668 667 594 0
475 4933.55 38 37 40 41 0 673 667 588 0
476 4934.11 37 36 40 41 0 666 670 591 0
477 4934.68 38 36 40 40 0 674 674 585 0
478 4935.24 37 36 40 40 0 674 668 591 0
479 4935.81 37 36 40 40 0 676 674 587 0
480 4936.37 37 37 40 40 0 668 673 587 0
481 4936.94 38 35 39 40 0 673 675 588 0
482 4937.50 37 36 40 40 0 668 668 593 0
483 4938.07 37 35 40 40 0 668 671 588 0
484 4938.64 38 36 40 40 0 675 667 594 0
485 4939.21 37 35 40 40 0 673 669 593 0
486 4939.77 37 36 39 40 0 671 672 592 0
487 4940.34 37 35 40 41 0 673 673 588 0
488 4940.90 37 36 40 39 0 667 673 589 0
489 4941.47 38 36 39 39 0 667 675 588 0
490 4942.03 38 37 39 40 0 674 670 587 0
491 4942.60 37 36 39 41 0 675 674 590 0
492 4943.16 37 37 40 41 0 671 664 587 0
493 4943.73 37 36 38 40 0 666 669 588 0
494 4944.30 37 36 40 40 0 667 667 585 0
495 4944.87 37 36 40 40 0 669 667 588 0
496 4945.43 37 37 40 40 0 673 675 590 0
497 4946.00 36 36 39 40 0 676 668 594 0
498 4946.56 36 36 39 40 0 668 670 592 0
499 4947.13 39 37 39 40 0 674 669 588 0
500 4947.69 37 35 39 39 0 676 669 593 0
501 4948.26 37 36 40 39 0 676 673 587 0
502 4948.82 38 36 40 40 0 668 671 592 0
503 4949.39 37 36 39 40 0 669 668 593 0
504 4949.96 38 37 38 40 0 666 674 587 0
505 4950.53 37 36 40 40 0 670 666 586 0
506 4951.09 37 36 40 40 0 673 674 587 0
507 4951.66 37 36 40 40 0 666 665 591 0
508 4952.22 36 36 39 40 0 676 676 589 0
509 4952.79 37 37 40 40 0 670 669 593 0
510 4953.35 37 36 40 40 0 678 672 592 0
511 4953.92 37 37 39 40 0 669 674 587 0
512 4954.48 38 36 39 40 0 667 666 592 0
513 4955.06 37 37 39 40 0 674 676 587 0
514 4955.62 38 36 40 40 0 668 669 593 0
515 4956.19 38 36 39 40 0 667 666 588 0
516 4956.76 37 36 40 40 0 667 672 592 0
517 4957.32 37 35 40 40 0 666 672 594 0
518 4957.88 37 36 40 40 0 674 674 590 0
519 4958.45 37 37 40 40 0 669 664 586 0
520 4959.01 38 36 39 40 0 674 667 587 0
521 4959.58 38 37 40 40 0 673 673 593 0
522 4960.15 37 36 40 41 0 669 674 587 0
523 4960.72 37 36 41 40 0 674 675 592 0
524 4961.29 38 36 39 40 0 671 673 588 0
525 4961.85 36 36 40 40 0 670 665 594 0
526 4962.42 37 36 39 41 0 669 667 589 0
527 4962.98 37 36 39 38 0 669 674 593 0
528 4963.55 37 37 39 40 0 669 667 591 0
529 4964.11 38 35 41 41 0 671 669 594 0
530 4964.68 37 36 40 39 0 674 668 588 0
531 4965.24 37 36 40 40 0 675 673 593 0
532 4965.81 38 36 39 40 0 671 676 594 0
533 4966.38 38 37 39 40 0 674 669 586 0
534 4966.94 36 36 40 40 0 675 674 594 0
535 4967.51 37 36 40 39 0 666 666 589 0
536 4968.07 37 35 40 41 0 669 674 592 0
537 4968.64 37 36 40 40 0 669 668 587 0
538 4969.21 39 36 38 40 0 667 674 595 0
539 4969.77 37 36 40 40 0 665 675 586 0
540 4970.33 38 37 40 40 0 669 669 588 0
541 4970.90 38 36 40 40 0 668 666 588 0
542 4971.46 37 36 39 40 0 668 667 593 0
543 4972.03 37 37 39 40 0 672 671 594 0
544 4972.59 37 36 40 40 0 674 669 594 0
545 4973.16 38 37 39 40 0 668 669 594 0
546 4973.72 37 37 39 40 0 677 671 590 0
547 4974.28 38 37 40 40 0 673 673 588 0
548 4974.85 37 36 39 42 0 675 675 592 0
549 4975.41 37 37 40 40 0 671 670 591 0
550 4975.98 37 36 39 40 0 669 667 589 0
551 4976.54 37 36 38 40 0 667 672 587 0
552 4977.10 37 37 41 40 0 671 675 587 0
553 4977.67 37 35 38 41 0 671 668 593 0
554 4978.23 36 36 40 40 0 676 673 592 0
555 4978.80 38 36 40 39 0 667 677 588 0
556 4979.36 38 37 40 40 0 672 673 587 0
557 4979.92 38 36 40 41 0 669 670 588 0
558 4980.49 37 35 40 40 0 670 669 593 0
559 4981.05 37 37 39 40 0 671 672 593 0
560 4981.62 37 37 40 40 0 669 672 589 0
561 4982.19 38 36 39 40 0 669 673 591 0
562 4982.76 38 36 40 39 0 666 674 593 0
563 4983.33 39 36 39 39 0 671 671 593 0
564 4983.89 37 37 40 40 0 669 668 593 0
565 4984.46 37 36 39 40 0 669 668 592 0
566 4985.03 37 37 40 40 0 670 664 592 0
567 4985.60 37 36 39 39 0 676 673 589 0
568 4986.17 38 37 40 40 0 668 668 586 0
569 4986.73 37 36 38 39 0 666 671 591 0
570 4987.30 37 36 39 40 0 673 666 587 0
571 4987.86 38 36 40 40 0 667 667 587 0
572 4988.43 37 36 38 40 0 668 676 592 0
573 4989.00 37 37 39 40 0 675 673 589 0
574 4989.57 36 37 39 40 0 674 667 593 0
575 4990.13 37 36 40 40 0 661 674 594 0
576 4990.70 38 37 39 39 0 670 675 590 0
577 4991.26 38 36 39 40 0 669 668 594 0
578 4991.83 37 36 40 39 0 668 668 587 0
579 4992.39 37 37 39 41 0 668 672 587 0
580 4992.96 38 37 40 40 0 676 665 594 0
581 4993.52 36 36 39 41 0 669 671 594 0
582 4994.08 38 37 39 40 0 676 666 588 0
583 4994.65 37 36 39 40 0 668 666 591 0
584 4995.21 38 35 39 40 0 674 665 590 0
585 4995.78 38 36 40 40 0 670 667 589 0
586 4996.35 37 36 40 41 0 666 672 588 0
587 4996.92 38 36 40 40 0 676 673 589 0
588 4997.48 38 35 38 39 0 675 666 589 0
589 4998.05 38 36 40 41 0 672 670 588 0
590 4998.61 37 37 40 40 0 676 677 593 0
591 4999.18 37 38 40 40 0 669 671 593 0
592 4999.75 38 36 38 40 0 673 667 586 0
593 5000.31 36 36 39 41 0 668 666 590 0
594 5000.88 37 35 40 40 0 669 673 584 0
595 5001.45 38 36 40 40 0 666 666 594 0
596 5002.02 37 36 40 40 0 666 672 589 0
597 5002.59 37 36 38 40 0 667 666 587 0
598 5003.15 37 36 40 39 0 675 672 586 0
599 5003.72 37 36 38 41 0 677 670 590 0
600 5004.29 38 36 39 40 0 674 669 594 0
601 5004.86 37 36 40 41 0 675 674 592 0
+39 -29
View File
@@ -28,8 +28,9 @@ Drills (pass a name):
(default 300) on scrap, sampled like `witness`. Prints the
per-channel peak delta over the ambient baseline and the
engine's own "run telemetry" line is the record. Run it
>= 3 times on representative material; the highest peak
delta sizes cool_fire_ir_delta.
>= 3 times on representative material; the highest peaks
are what the engine's cool_fire_q1/q2 alert and critical
thresholds (absolute counts) must sit above.
ircut [S] [F] e.g. ircut 1000 300
pthresh Laser power-threshold ladder: one line per power level on
scrap, climbing from 2 % to 30 % of full, at constant power
@@ -196,8 +197,29 @@ def panel_token():
except OSError:
return ''
# Ambient lid-IR baseline (2026-08-14, lid closed, idle): per-channel means.
IR_BASELINE = [37.3, 36.3, 39.5, 40.0]
def sample_ir_baseline(seconds=3.0):
"""Per-channel lid-IR means at idle, lid closed, taken before the job:
the baseline this run is judged against (never a stored one)."""
acc = [0.0, 0.0, 0.0, 0.0]
n = 0
t_end = time.time() + seconds
while time.time() < t_end:
s = sample_forgectrl()
if s and s['ir'] and len(s['ir']) == 4:
for i in range(4):
acc[i] += s['ir'][i]
n += 1
time.sleep(0.25)
if not n:
return None
return [round(a / n, 1) for a in acc]
def ir_delta(peak, base):
if base is None:
return ['n/a'] * 4
return [round(peak[i] - base[i], 1) for i in range(4)]
def get_json(path):
@@ -394,6 +416,7 @@ def drill_witness(g):
'G90',
'M2', # program end: X-3 job-based disarm trigger
]
ir_base = sample_ir_baseline()
samples = run_and_sample(g, job)
# Analysis.
emis = [s['emission'] for s in samples if s['emission'] is not None]
@@ -415,8 +438,7 @@ def drill_witness(g):
print('pgood_samples during job: peak=%s (>=128 = power-good)'
% (max(pgood_vals) if pgood_vals else '-'))
print('lid_ir peak=%s vs baseline=%s delta=%s'
% (ir_peak, IR_BASELINE,
[round(ir_peak[i] - IR_BASELINE[i], 1) for i in range(4)]))
% (ir_peak, ir_base, ir_delta(ir_peak, ir_base)))
print('hv_current range: %s..%s' % (min(hv_vals) if hv_vals else '-',
max(hv_vals) if hv_vals else '-'))
print('armed observed during job: %s' % armed_seen)
@@ -436,10 +458,11 @@ def drill_witness(g):
% (round(disarm_dt, 1) if disarm_dt is not None else '>75 (REVIEW)'))
ok = peak_emis > 0 and end_emis == 0
print('WITNESS emission %s' % ('PASS' if ok else 'REVIEW - see values above'))
# Emit the recommended cool_fire_ir_delta floor.
worst = max(ir_peak[i] - IR_BASELINE[i] for i in range(4))
print('suggest cool_fire_ir_delta >= max(15, %.0f) once several jobs '
'confirm the peak delta' % (2 * worst if worst > 0 else 15))
# The engine's fire watch trips on absolute lid-IR counts, per quartile
# pair (cool_fire_q1_alert / _critical, cool_fire_q2_alert / _critical):
# the peaks above are what those thresholds must clear on a clean job.
print('fire-watch thresholds must sit above these peaks: %s '
'(cool_fire_q1_* for channels 1-2, cool_fire_q2_* for 3-4)' % ir_peak)
return samples
@@ -502,6 +525,7 @@ def drill_ircut(g):
'G1 X-30 F%d' % feed, 'G1 Y-30 F%d' % feed,
'M5', 'G90', 'M2',
]
ir_base = sample_ir_baseline()
samples = run_and_sample(g, job, overall_timeout=400)
ir_peak = [0, 0, 0, 0]
ir_min = [10 ** 6] * 4
@@ -522,14 +546,13 @@ def drill_ircut(g):
print('\n--- results ---')
print('samples: %d emission peak=%s fire_watch states=%s'
% (len(samples), max(emis) if emis else '-', sorted(fw)))
delta = [round(ir_peak[i] - IR_BASELINE[i], 1) for i in range(4)]
delta = ir_delta(ir_peak, ir_base)
print('lid_ir min=%s peak=%s baseline=%s peak delta=%s'
% (ir_min, ir_peak, IR_BASELINE, delta))
% (ir_min, ir_peak, ir_base, delta))
print('hv_current range: %s..%s' % (min(hv_vals) if hv_vals else '-',
max(hv_vals) if hv_vals else '-'))
worst = max(delta)
print('worst peak delta this job: %s counts -> cool_fire_ir_delta must sit '
'above the worst across ALL jobs (>= 2x it, never < 15)' % worst)
print('worst peaks this job: %s counts -> the cool_fire_q1/q2 alert '
'thresholds must sit above the worst across ALL jobs' % ir_peak)
print('the engine logged its own "run telemetry: lid IR ..." line for this job')
return samples
@@ -961,20 +984,7 @@ def _linfit(xs, ys):
return a, b, r2
def _degc(raw):
"""The factory coolant conversion when gfbench is importable (on the
board, or with GF_HOST set), else None and the raw count is quoted.
The helper lives beside this file in the repo and under the bench
directory on the dev image; a copy staged elsewhere still finds it."""
for d in (os.path.dirname(os.path.abspath(__file__)),
'/usr/share/forgetest/bench'):
if d not in sys.path:
sys.path.append(d)
try:
from gfbench import degc
except (ImportError, SystemExit):
return None
return degc(raw)
from gfbench import degc as _degc
def pcurve_levels(g, pcts):
+1 -5
View File
@@ -43,11 +43,7 @@ ADC_F = 1024.0 * 1.3
RINF = 10000.0 * math.exp(-3380.0 / 298.15)
def degc(raw):
if raw is None or raw <= 0 or raw >= ADC_F:
return float('nan')
r = 10000.0 / (ADC_F / raw - 1.0)
return 3380.0 / math.log(r / RINF) - 273.15
from gfbench import degc
def rd(path):
-11
View File
@@ -1,11 +0,0 @@
{
"points": [
{
"measured_c": 25.67,
"raw1": 672.4,
"raw2": 672.6,
"note": "IR on reservoir+hoses 78.2F, ambient 78.0F, idle 1h, pump on, heater off",
"when": "2026-08-02 18:13:41"
}
]
}