Skip to content

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

EQU  TM11, VP.941    ;Tempo attesa battute giu' allo START
                     ;"wait time for stops DOWN at START"
 OS   T  Time Description
  6   6  1500 Battute giu'

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

EQU  TIMEOUT  ,7000      ;7 seconds
EQU  TIMEOUT2 ,25000     ;25 seconds

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 M66 timeouts — 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 inputIF.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
  • machine-parameters.mdpargen.prm, the configuration switches
  • plc-sequences.md — the sequences these timings belong to
  • plc-fault-codes.md — what happens when a timeout expires