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 configuration - pargen.prm

3 September 2026. Param/pargen.prm is the machine's general parameter file, captured from the rp5800. It is short, plain text, and it settles several questions that were open, including one that was blocking the tool-change subroutine.

โš ๏ธ Values are the machine's own convention: linear distances in hundredths of a millimetre.


๐Ÿ”ด What it resolves

The tool-change job contains:

CMP  0,EN_CU_6         ;EN_CU_6 < 0 ?
JPLT J50_INVERTI       ;jump if so - send 29 minus the pocket number

EN_CU_6 = 8 is positive, so the branch is not taken: the pocket number goes out as-is, not inverted.

โœ… #<invert_bits> = 0 in linuxcnc-sim/nc_subs/toolchange.ngc is correct - it was a default, and it is now confirmed from the machine's own configuration rather than assumed.

โš ๏ธ 8 most likely means the carousel has 8 pockets. The other changers (EN_CU_123, EN_CU_4, EN_CU_5, EN_CU_7, EN_CU_8) are all 0, which confirms C.U. 6 is the only tool changer fitted - the eleven cycles in the PLC, only one applies. Treat the pocket count as probable rather than proven until a tool table or a look at the carousel confirms it.

2. SWITCH_PLC = 0 - the optional waits are NOT taken

The tool-change cycle is littered with conditionals like:

;*** 2.69 SE IL BIT 4 DI SWITCH_PLC E'SETTATO, ATTENDO IF_PIST_CAMBIO_SU 0

All bits of SWITCH_PLC are clear, so none of those optional waits apply to this machine. That removes a whole class of "does this branch run?" from the ATC translation.

3. Double pressure - confirmed not fitted

EN_DOPPIA_P = 0. This was already inferred from the absence of an output in the I/O map; the machine's own configuration now says so directly.

4. No rotary or auxiliary axes

EN_ASSEB, EN_ASSEC, EN_ASSEJ, EN_ASSEH, EN_ASSEP are all 0. X, Y, Z and the spindle. Nothing else. POS. ASSE S = 4 confirms again that AXIS 4 is the spindle.

โš ๏ธ POS. ASSE C = 5 is defined but EN_ASSEC = 0, so a C axis position exists in the configuration and is disabled. Do not read it as fitted.

5. Three I/O cards

N.SCHEDE I/O = 3 โœ… matches the three daisy-chained I/O card assemblies found in the device list.


๐Ÿ”ด The zone split, found

Parameter Value Means
X MAX Z. 1 182830 Zone 1 soft limit, X = 1828.30 mm
X MIN Z. 2 183910 Zone 2 soft limit, X = 1839.10 mm

๐Ÿ”ด Neither of those is the zone boundary. From PLC version 3.82 the machine tests the mean of the two โ€” (1828.30 + 1839.10) / 2 = 1833.70 mm โ€” and that single number is the pendulum midline. See zones-and-loading.md ยง1.

A 10.80 mm dead band between the two working zones. That is the boundary the two-zone logic works to, and it will be needed for pendulum working in phase 5.

Also Value
L.MAX.PAN.Z1 / Z2 120000 Max panel length per zone, 1200.00 mm
MAX.P.Z1.N.P / Z2 90000 900.00 mm - a second, smaller panel limit. โœ… Has no VP. symbol in MW310.PLC, so it is read by the interpreter/HMI only, never by the real-time logic. A program-acceptance limit, not an interlock. Nothing to port into HAL

Useful for the LinuxCNC configuration

Jog velocities - straight into the INI

Axis Min Max
U (X) 30 500
V (Y) 30 300
W (Z) 30 200

โš ๏ธ Units unconfirmed. The ratio X : Y : Z of 500 : 300 : 200 is consistent with the Syncro.prm velocity ceilings (30000 : 25000 : 13000), so these are plausibly mm/s or a scaled equivalent. Better than the placeholders currently in the sim INI, but confirm before trusting them for real motion.

Park positions

Parameter Value
Q.PARK X Z.1 280000 X park = 2800.00 mm
Q.PARK V / Q.PARK W 0 Y and Z park at zero
Q.W C.U.GEN. 0 โœ… Explained (Grant, 3 Sep): the tool change happens at Z zero because an AIR RAM lifts the spindle head. The Z axis has no park height to travel to. toolchange.ngc now uses 0. Provisional until watched on the machine

Other values worth having

Parameter Value
TIPO INVERT. 2 Inverter type 2
EN_BARCODE 2 A barcode reader is configured - unexpected, and not seen in the I/O map. Worth a look
EN_BARRIERA 0 No light barrier
EN_SCHED_ANA 0 The "new analogue card" branch in the PLC does not apply
EN_CAMPO_INT 1 Internal field enabled
DIS.SPEC. 20000 200.00 mm
Q_ANTICOLL_V 265 2.65 mm anti-collision allowance
NUM.ATT.PU 3 3 - probably a drill-related count
RALL.FV.IN. / USC. 100 Feed ramp in / out

โš ๏ธ There is a second, older copy

Mw310-Copy-backup/Param/pargen.prm also exists and differs. mw310-recon.md records that the stale copy has faster axis parameters. Always read the live tree, Mw310/Param/, not the backup.

โœ… Closed โ€” EN_CU_6 = 8 really is eight pockets

5 September 2026. The Panasonic carousel indexer's own EEPROM was read from its front panel. Its step data holds eight defined positioning points and twenty undefined ones, spaced at exactly 100000 pulses.

Two systems that share nothing but five wires agree on the number, and the PLC uses EN_CU_6 as a counter wrap rather than a flag:

J69_CMP_MAX_PINZE
        CMP    VPINZA_UTE,VAPP_CU_6   ;num.pinza attuale == max ?
        JPNZ   J69_INCR_POS           ;salto se no
        COPY   0,VPINZA_UTE           ;se si'resetto VPINZA_UTE

Full capture in carousel-indexer.md.

Still open in this file

The units of the jog velocities Ratio is consistent with Syncro.prm, absolute scale is not confirmed
EN_BARCODE = 2 A barcode reader is configured but does not appear in the I/O map
  • plc-sequences.md - the logic these parameters steer
  • mw310-recon.md - Syncro.prm, the axis parameters, and the stale-copy warning
  • control-logic-spec.md - the functional inventory
  • ../linuxcnc-sim/ - where these values land