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¶
- Recover
Svfrom the stick (mw310-toolchain) or the 30 Aug image. - Verify it:
sha256sum -c sv-toolchain.sha256from inside the folder. Do not skip this ā the whole point of the hashes is that a recovered copy is unproven until checked. - Put
MW310.PLCandMW310.EQUfrom the repo capture in place. - Run the original command line, recorded verbatim in
Sv\CPLC32.LOG:
- Compare the SHA-256 of the resulting
.BINagainstdfc3a14dā¦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".
Related¶
- mw310-recon ā the recon this came out of, and the I/O map
- serial-port ā
Comdrv.exeis what sets the serial framing