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 PLC toolchain — hashes, and where the executables live

31 August 2026.

The repo holds the PLC source (MW310.PLC), the I/O definitions (MW310.EQU) and the compiled binary running on the controller (MW310.BIN). It does not hold the compiler, because executables do not go in the repo.

This file closes that gap without breaking the rule: the executables live on the backup stick, their SHA-256 hashes live here. Any copy recovered later — off the stick, out of the 30 Aug image, or from another Masterwood machine — can be checked against these hashes before it is trusted.

Companion file: sv-toolchain.sha256, a full manifest of all 61 files in C:\Mw310\Sv, in sha256sum -c format. Run sha256sum -c sv-toolchain.sha256 from inside a recovered Sv folder to verify the lot in one go.

Read this before relying on any of it

cplc32.exe and every other tool here is PE32, x86, 32-bit — verified from the PE headers on 31 Aug, not assumed. So is mw310.exe itself.

32-bit executables still run fine on 64-bit Windows today, through WoW64. The risk is not present-day incompatibility, it is that 32-bit support is the most likely thing to be withdrawn in a future Windows, and these binaries are from 2003–2004 with no possibility of a rebuild.

So the durable record of this machine's logic is MW310.PLC (the commented source) and MW310.LST (the commented listing with resolved addresses). Both are plain text, both are in the repo, and both will be readable in fifty years. The MW310.BIN comparison described below is belt-and-braces — a way to confirm the source we hold really is what was running, if the tooling still runs when someone wants to check. It is not something the retrofit depends on. If cplc32.exe will not run on whatever PC is around at the time, nothing important is lost.

Do not treat the toolchain as a dependency. Treat it as a bonus that may or may not still work.

What each tool is for

Tool Size Purpose
cplc32.exe 135 KB The PLC compiler. The only tool needed for the source-versus-binary check. Invoked per CPLC32.LOG.
cplc.exe 100 KB Older compiler build. Kept for completeness.
PLCedi.exe 965 KB PLC editor/browser. Reads MW310.PLC with MW310.EQU for symbol names. Useful for reading the logic with names resolved.
sv.exe 2.3 MB Service tool. Talks to the controller, reads machine parameters.
Init.exe 892 KB Controller initialisation.
Profi.exe 674 KB Parameter transfer tool.
TXFLASH.EXE 693 KB Firmware loader. Not needed and not to be run — flashing is not in scope.
CANODiagnostica.exe 669 KB CANopen diagnostics. This machine does not use CANopen.
TxCanoFlash.exe 580 KB CANopen firmware loader. Not applicable.
Comdrv.exe 663 KB Serial comms driver. Not in Sv — it is at C:\Mw310\Comdrv.exe. Every tool above needs it to reach the controller, and it is the thing that sets the serial framing (see serial-port).

Comdrv.exe is easy to miss because it sits in the parent folder. Copy it too.

Hashes

The files the comparison needs

File SHA-256
Sv\cplc32.exe 8565d3e30b931fbe6f5554b97dbb763a117ddd42557608a046491add9d395369
Sv\MW310.BIN dfc3a14d4af0693fa007dc9b5616301239e4f61df907bbd282d9ad7dd5672439
Sv\MW310.PLC a86f8ffda32da53fd7bf1e48e9f2deaf61e596850d06dda6ac01c6100b281a8c
Sv\MW310.EQU aea543db347aa1ef085e4e91d6a300aee237020b447ae21eaa70f2c90b18609f
Sv\MW310.LST 5c38565a6d1e93e7bebf041238b8a7d0eb02c71f8774a9aee09dcfedd04655fa
Sv\MW310.SYM 33fc3a8470c3ff390fd89df70dd6bf520be49fc6179877abf945c2c27fab94c9

The last four are in the repo already, so those hashes also serve as a check that the captured copies have not rotted.

The rest of the toolchain

File SHA-256
Sv\cplc.exe 19cf08bbe9af1ad257db5f5c9f705a0916e62bec09d538743daf9d5745269fdc
Sv\PLCedi.exe e0a57267f0e54e3d1e5705040a4a51f0d8928a4f0976d430a2fa8ea245bbbfaf
Sv\sv.exe bdcd4db9849127b82a733ac0a68fd3b17e1064ac161a6c580c779cb26dd0fce6
Sv\Init.exe ee371a49fa7fc678243c828eed8d20e16d65a4e8fd6eb2fe86c21e3d0ab58f17
Sv\Profi.exe 7a6a4216c1f0eb26ac8a13b59f1ea52a3c6ede95a273d363102cffece3abe5b1
Sv\TXFLASH.EXE d828214255cafa79454befb10340364c6f0112ff8c2d17716049004ff6668fd6
Sv\CANODiagnostica.exe a451918849abc0b6de84c2926906480e10eb4ab79aed9a631e1fd73c7f7733f2
Sv\TxCanoFlash.exe b5208c3c3916ba0ef7a8944327d9d4b3001b79cc6eacb263b12dbdbf93dad6c2

Outside Sv, but part of the picture

File SHA-256
Comdrv.exe aa32f8c66db96c624b824c5656b3ad1055ce571056ae31b8cd76294072333801
interdll.dll 5846bc0b3b728659d837ac6961231d55b0acebf46d7891ed75f4926dda48ee1b
mw310.exe 63e35b38cf5d78455bacb54ae60e0efe6ffc26097871979aa61e68c360a39c9b

mw310.exe is the HMI itself. Hashed for provenance — if a copy of MW310 ever turns up elsewhere, this says whether it is the same build.

How to run the comparison, if it is ever wanted

  1. Recover Sv from the stick (mw310-toolchain) or the 30 Aug image.
  2. Verify it: sha256sum -c sv-toolchain.sha256 from inside the folder. Do not skip this — the whole point of the hashes is that a recovered copy is unproven until checked.
  3. Put MW310.PLC and MW310.EQU from the repo capture in place.
  4. Run the original command line, recorded verbatim in Sv\CPLC32.LOG:
C:\Mw310\SV\CPLC32 /S /AF80000 /L60000 /DMW310 /v3 /D2CAMPI /DCU_6 MW310.PLC MW310.BIN MW310.LST
  1. Compare the SHA-256 of the resulting .BIN against dfc3a14d… above.

Expect the comparison to be imperfect. Compilers of this era often stamp a build timestamp into the output, in which case the hashes will differ even when the logic is identical, and the meaningful comparison becomes a byte-diff ignoring the header. A mismatch is therefore not evidence that the source is wrong. Treat a match as strong confirmation and a mismatch as inconclusive until the differing bytes have been looked at.

What the timestamps already tell us, for free

This is worth knowing because it makes the comparison less important than it first appears.

MW310.BIN, MW310.LST and MW310.SYM share a modification time to the second — 2017-11-23 12:42:12 — so a single compiler run produced all three. MW310.EQU was saved eight minutes earlier, at 12:34. MW310.PLC was not touched at all: it still carries 2005-02-17.

So the November 2017 rebuild changed the I/O assignments, not the control logic. The source we hold has been running the machine since 2005, and the I/O map we hold was current at the last rebuild rather than being a stale earlier revision.

The compile flags corroborate two findings reached independently from the parameter files (see mw310-recon): /D2CAMPI is the two-zone build, and /DCU_6 is tool-change unit 6, matching EN_CU_6 = 8 in pargen.prm and the GIOSTRA_CU_6 carousel signals in the I/O map.

That circumstantial agreement is already reasonable evidence that source and binary correspond. The compile check would only upgrade it from "very likely" to "confirmed".

  • mw310-recon — the recon this came out of, and the I/O map
  • serial-port — Comdrv.exe is what sets the serial framing