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.

Operating the MW310 โ€” the file model, tool numbering, and how a job runs

5 September 2026. From the machine's own disk: PROG\, Utensili\, Defs\, tabuten.tmp, English\ISO.TXT, English\messaggi.txt, and the MW310.PLC comments.

โš ๏ธ This is not a manual and there isn't one on the box โ€” the only English document on the machine is MSystem\EN - Working with DXF.doc, which is about DXF import. What follows is reconstructed from the machine's own files, including two real working job programs left by a previous owner. Where I am inferring rather than reading, it says so.

โš ๏ธ Nothing here is an instruction to run anything. Running a program moves the head and rotates a loaded carousel.


1. The file model

Four kinds of file, and they stack:

Where What it is
Tool Utensili\*.utn One file per cutter or bit โ€” diameter, length, speed, description
Program PROG\*.PRG The actual toolpath, in Masterwood ISO
Sequence PROG\*.seq Assigns programs to the machine's fields, with the panel size
Tool table tabuten.tmp The live list of what is loaded where. Generated, not hand-edited

A job is: tools defined โ†’ program written โ†’ program placed in a sequence โ†’ sequence run.

The tool file, .utn

Thirteen lines, no labels. Decoded by comparing several:

1        type: 1 = router cutter, 0 = drill
0
950      diameter, hundredths of a mm   -> 9.50 mm
8180     length,   hundredths of a mm   -> 81.80 mm
18000    spindle speed, rpm  (0 for drills)
0
9.5 Finishing Cutter        <- description, this is what shows on screen
Fresa 1.bmp                 <- icon
1
20
0
0

โš ๏ธ Lines 2, 9, 10, 11 and 12 are not identified. Line 10 varies (20, 5, 25, 0) and is not the carousel pocket โ€” see below.

โš ๏ธ The filenames lie. 6mm router.utn contains the description "9.5 Finishing Cutter". Trust the description inside the file and the tool table, not the filename.

The sequence file, .seq

PROG\Singolo.seq, complete:

%
|
C1 0 'tool park.TLF' 800 16 500 ''
C2 0 '' 0 0 0 ''
C3 0 '' 0 0 0 ''
C4 0 '' 0 0 0 ''
R1
%

C1 to C4 are the four fields โ€” the machine's A/B/C/D. On this machine only C1 (zone 1) and C4 (zone 2) correspond to real hardware; B and C have no stops or clamps fitted (see zones-and-loading.md).

The three numbers after the program name are length, thickness, width โ€” 800 16 500. Confirmed because they match the |4 |5 |6 header of P20000.PRG exactly.

R1 is the repeat count.

The program header

Every .PRG opens with a numbered block:

|4 2700       panel length  (X)
|5 6.10       thickness
|6 1215       panel width   (Y)

Read off Window Box Facia no holes.PRG (2700 ร— 1215 ร— 6.10) and P20000.PRG (800 ร— 500 ร— 16). The other header lines are not identified.


2. ๐Ÿ”ด The tool numbering, from this machine's own table

tabuten.tmp is the live tool table, and it decodes the T word completely:

 1 : 4mm vertical drill bit
 2 : 8 mm vertical drill bit
 4 : 35mm vertical drill bit
 5 : 10 mm vertical drill bit
 6 : 5 mm vertical drill bit
 7 : 5 mm vertical drill bit
 8 : 5 mm vertical drill bit
 9 : 5 mm vertical drill bit
10 : 5 mm vertical drill bit
25/1 : 80 mm router
25/2 : 9.5mm MDF Cutter
25/3 : J Pull
25/4 : 6mm Cutter
25/5 : 9.5 Finishing Cutter

Two different things share the T word:

Form Means
T1 โ€ฆ T10 A fixed drill spindle. No tool change โ€” the PLC just fires that spindle's output
T25/n The router, with carousel pocket n. This is what triggers a tool change

So 25 is the router head and the number after the slash is the pocket. That matches ISO.TXT, which describes the T word as "Tool number (T),(Tn,m,..),Tool changer (Tn/m)" โ€” the Tn/m form is the tool-changer form.

โœ… This is the machine's own working data, not a guess. Five tools were loaded in pockets 1 to 5.

โš ๏ธ Whether those five are still physically in those pockets is unknown. Check the carousel against this list before running anything โ€” the tool table is software state, and if it disagrees with the metal, the tool change will fault (see atc-operation.md).


3. ๐Ÿ”ด How a tool change is actually commanded

Not by an M-code. The tool is declared in the routing setup block, and both real programs on the machine do exactly this:

G172 X9.02 Y=#902 Z0 S18 E1 T25/2
G172 Selection of start point, tool, speed, entry speed
X Y Z Start point
S18 Routing speed
E1 Entry (penetration) speed
T25/2 Router, carousel pocket 2 โ€” the 9.5 mm MDF cutter

When the interpreter meets a G172 (or G173) asking for a tool that is not the one mounted, it raises OS.51, and that is what starts the PLC's tool-change cycle. M60 unloads a tool without loading another, taking K as the spindle number.

โš ๏ธ S18 is unexplained. The tool file for a 9.5 mm cutter carries 18000 rpm, so S18 is most likely thousands of rpm โ€” but that is inference. Do not rely on it.


4. How a job runs, start to finish

Reconstructed from the PLC's own comments plus the zone logic:

1.  Choose the sequence / program
2.  Press  F5  =  ESECUZ  (Execution)
        -> runs JOB 54, which loads the program into the field(s)
        -> starts JOB 5, the supervisor
3.  JOB 5 enables that zone's pedal and lights its lamp
4.  Clamp the panel with the pedal
        press+release once  -> stops up, table floats, vacuum off
        press+release again -> panel set down, vacuum on, lamp steady
5.  Press that zone's START button  (IF.1 zone 1, IF.2 zone 2)
6.  The program runs. Each G172 with a new T25/n fires a tool change.

F5 is the execution key. MW310.PLC names it three times:

;*** JOB #54 INIZIALIZZAZIONE PROGRAMMA NEI 2 CAMPI (CON TASTO F5-ESECUZ) ***
;*** FINE INIZIALIZZAZIONE JOB 5 CON TAST F5-ESECUZ
;*** (SIA PER TASTO F5-ESECUZ CHE PER BAR CODE)

๐Ÿ”ด Step 2 is the one that is easy to miss. Nothing arms โ€” not the pedal, not the start button, not the tool changer โ€” until a program has been loaded with F5. Until then the machine is inert by design, and the pedal genuinely does nothing.


5. There are two working programs already on the machine

Both left by a previous owner, both in English, and both perform tool changes:

PROG\Window Box Facia no holes.PRG 2700 ร— 1215 ร— 6.10. Several G172 โ€ฆ T25/2 blocks with G41/G42 cutter compensation and G102/G103 arcs
PROG\P20000.PRG 800 ร— 500 ร— 16. Simpler โ€” two rectangles, both on T25/2

P20000.PRG is the better one to read, and probably the better one to study before writing anything: it is short, it is a plain rectangle, and it shows the whole structure.

What the programs show about the coordinate convention

#910=DX
#911=DY
#902=#911-(683.90)
G101 X13.77 Y=#902 Z0 F20

DX and DY are the panel dimensions from the header. Every Y coordinate is computed as DY โˆ’ offset, so the programs are written from the far Y edge, not from zero. Worth knowing before reading any coordinate in them, and worth reproducing or deliberately not reproducing when the CAM post is written.

G101 is linear, G102/G103 are arcs, G41/G42 are cutter compensation left/right, G40 cancels it, G120 K1 opens the working face.


6. The setup screens, with their real labels

The Defs\*.def files are the HMI screen layouts. Each field points at an index into messaggi.txt, so the English labels can be recovered exactly:

Tool magazine (Magazzino.def) โ€” the carousel itself:

Field Screen label
TIPO Tool magazine type
QUOTA_CARICO Coupling value
QUOTA_SCARICO Releasing value

Carousel tool (UtensileCU.def) โ€” one row per pocket:

Field Screen label
NUMERO Number
TIPO Type
QUOTA1 / QUOTA2 Value 1 / Value 2
ANGOLO Ref. t.
EN_BAND Enable finger curtain
LANCIO Projection

Router spindle (MandrinoCU.def):

Field Screen label
OFF_U / OFF_V / OFF_W Offset U / V / W
VMAX Rot.spd.
V10V VRot.10V โ€” the rpm at 10 V, i.e. the analog spindle scaling
TIPO_CU T.C.
TIPO_LAN Projection

๐Ÿ”ด VRot.10V is worth finding on screen. It is the machine's own record of how many rpm the spindle turns for a 10 V command โ€” which is exactly the number the LinuxCNC spindle scaling needs, and it is sitting in a settings screen rather than having to be measured.


7. ๐Ÿ”ด Running without a vacuum pump

Short answer: yes, you can, and the machine has a designed switch for it.

The vacuum check is CHK_VUOTO, and it is gated three ways. It fires only when all of these hold:

Gate
MCHK_VUOTO Armed by OS.24 at program start and disarmed by the same bit at program end. Outside a running program the check does not exist at all
MFLAG_VUOTO_A (or _D) The per-field Vacuum toggle. Off for that field โ†’ skipped entirely
MPRGCAMPOA (or _D) That field must be the one executing
not MEND_CYCLE_PARK No check during end-cycle or park

Plus a 2 second grace period (DEL1 โ€ฆ DUESECONDI) after it arms, so a pump still spinning up is not an instant fault.

CHK_VUOTO_04
    AND  MAPPOGGIO,MFLAG_VUOTO_A,MPRGCAMPOA
    TEST MAPPOGGIO           ;vacuum A ON *and* A executing ?
    JPNZ CHK_VUOTO_GENERALE  ;only then is IF.9 tested

If it does fire and IF.9 is low, the fault is 1006.

The switch to use

Turn the field's Vacuum toggle OFF on the clamping setup screen โ€” the same screen that carries PEDALE / AUTO for the stops (zones-and-loading.md ยง10). It writes bit 0 (field A) or bit 3 (field D) of VTIPO_VUOTO, VV.33.

That is the machine's own mechanism for a job that does not use vacuum โ€” a jig, a template, a mechanically clamped part โ€” not a workaround.

ISO.TXT also lists M203 VACUUM CONTROL MANAGEMENT, taking K as a parameter list, so a program can manage it too. The parameter list is not documented on the box.

What is unaffected either way

  • Jogging, homing, setup and manual moves โ€” no program running, so no check
  • Clamping and START โ€” MBLOCCO_PEZZO is set by the pedal cycle and never reads IF.9
  • The tool change โ€” JOB 48 does not test vacuum anywhere

And what the per-field sensors would have done

IF_VUOTO_AEI and IF_VUOTO_DHL are both on the OF.254 not-present sentinel. The only real vacuum input on this machine is the general one, IF.9. So there is a single check to satisfy or disable, not three.

โš ๏ธ The obvious caveat

Disabling the check does not hold the panel down. It only stops the controller complaining.

For proving the ATC, the motion and the program structure, run with nothing on the table at all โ€” no panel, no cutting, nothing to throw. The pedal cycle still has to be performed to set MBLOCCO_PEZZO and permit START, but it can be performed against an empty bed.

Cutting without hold-down is a different matter entirely and is not what this section is licensing.


8. What is still unknown

The menu navigation Which softkey opens which screen. F5 is established; the rest is not. This needs someone in front of the machine, or Masterwood's manual
S18 โ€” units of the speed word Almost certainly thousands of rpm, from the tool file's 18000. Unconfirmed
.utn lines 2, 9, 10, 11, 12 Not identified. Line 10 is not the pocket number
Posizioni.dat 40-odd rows keyed 1-22, 98-100, 200-224, 301-305, 400+. Rows 201-224 all carry 25 in column 2 โ€” the router โ€” so they are probably carousel-related, but the columns are not decoded
The .PRG header lines other than 4/5/6 Not identified

  • atc-operation.md โ€” the tool-change cycle itself, its timings and its faults
  • zones-and-loading.md โ€” the pedal, the lamps, and what F5 arms
  • plc-fault-codes.md โ€” all 95 fault codes in English