Working documentation
This page is generated from the project's working notes. It records a real retrofit in progress, corrections included. Anything marked 🔴 or ⚠️ is unresolved or carries a caveat - read those before acting.
The machine's own timings¶
3 September 2026. Param/time.prm is a plain-text table of the machine's timer values, with descriptions. Combined with two constants in MW310.PLC it gives the real numbers for almost everything the retrofit has to reproduce.
None of this needed the machine running.
🔴 The stop dwell — the number my interlock was guessing at¶
1500 ms.¶
✅ This confirms the interlock design and corrects the number. The spindle interlock in linuxcnc-sim/tuchop-io.hal waits after the stops are commanded down before permitting — which is exactly what TM11 is for. I had used 2000 ms with a note saying "start here and reduce by measurement".
The machine's own value is 1500 ms, and the sim now uses it.
⚠️ Note what kind of number this is. There is no sensor on the stops, so this cannot be a timeout waiting for a confirm — it can only be a delay, allowing time for the air to act. That is why it is directly usable as the interlock dwell rather than as a maximum.
The two global timeouts¶
Every WAITTIM in the PLC uses one of these:
| Used for | Value |
|---|---|
| Gripper up/down, change piston, tool present | TIMEOUT = 7 s |
| Carousel position reached, carousel home | TIMEOUT2 = 25 s |
🔴 toolchange.ngc was using 10 s for everything. Corrected: 7 s for the gripper and piston waits, 25 s for the carousel. The carousel gets far longer because it may have to index most of the way round.
The rest of the table¶
| Function | Time | Notes |
|---|---|---|
| Punte Up/Down — drills | 100 ms | Very fast, consistent with a short pneumatic stroke |
| Lama aggregati Up/Down — saw | 1000 ms | |
| Pantografo su/giu' / Inverter ON/OFF — router head | 2500 ms | |
| CU4/5/6/10 — tool change | 7000 ms | Matches TIMEOUT |
| Park axes before program start, or on END-CYCLE | 3000 ms | |
| Cambia DAC | 500 ms | |
| Gestione I/O programmabili | 2000 ms | |
| Rientro lancio 2 | 500 ms | |
| Fine tastatura / Tasta X / Y / Z | 2000 ms | Probing — not fitted here |
| Anuba loading, pressing, drilling | 100-1500 ms | Hinge unit — not fitted here |
| Loader bar, automatic load, workpiece transfer | 1000-3000 ms | Not fitted here |
⚠️ Roughly half this table is for hardware this machine does not have — the Anuba hinge unit, the bar loader, the probe. As with the fault codes, presence in the table is not evidence the hardware exists.
🔴 Timeout versus duration — the distinction that matters¶
These values are mostly maximums, not measurements. A WAITTIM gives up after the timeout; the actual motion is usually much faster.
| Where a value IS the real duration | Where it is only a ceiling |
|---|---|
| Stops down, 1500 ms — no sensor exists, so it can only be a delay | Anything with a confirm input: gripper, piston, carousel, head retract |
So:
- ✅ Use 1500 ms directly as the stop dwell.
- ✅ Use 7 s / 25 s directly as
M66timeouts — that is exactly what they are. - ⚠️ Do not read "Punte Up/Down 100 ms" as "a drill takes 100 ms to drop". It means the PLC gives up after 100 ms. The real stroke time still wants measuring with
halscope.
⚠️ The router plunge has no down-confirm input — IF.10 only confirms up. So plunging is blind and needs a delay; retracting can wait on IF.10 with the 2500 ms ceiling. The plunge delay is the one number still genuinely unknown.
What this changed in the sim¶
| File | Was | Now |
|---|---|---|
tuchop-io.hal |
stop dwell 2.0 s | 1.5 s |
nc_subs/toolchange.ngc |
all timeouts 10 s | 7 s, carousel 25 s |
nc_files/drill-demo.ngc |
G4 P0.5 between drills |
G4 P0.1, with the ceiling caveat |
nc_subs/router_retract.ngc |
3 s timeout | 2.5 s |
Related¶
machine-parameters.md—pargen.prm, the configuration switchesplc-sequences.md— the sequences these timings belong toplc-fault-codes.md— what happens when a timeout expires