System Overview: Sinumerik 810M GA1 Hardware and Software
The Sinumerik 810M is a Siemens 3-axis milling CNC controller family introduced in the mid-1980s and widely deployed on training, educational, and small-production machines such as the Terco CN45 bench-top milling machine. The controller's "M" suffix denotes the milling-specific NC software, in contrast to the "T" turning variants (810T) used on lathes. The 810M runs on a multi-board CPU architecture based on the Intel 80186/80286 with proprietary Siemens cycle-time hardware, and it stores system software, machine data, part programs, and language strings across a bank of EPROMs and a battery-backed CMOS RAM.
Three major software generations are commonly encountered in the field:
- GA1 – Original system software; minimal options, no integrated DNC/drip-feed interface.
- GA2 – Intermediate release with additional cycles and minor option-bit additions.
- GA3 – Final, most-featured generation; adds the DNC/drip-feed option and several extended programming functions.
On the Terco CN45, the controller is typically delivered as SW 3.x (software version 3) running on GA1 firmware. Identifying the generation is critical: many option bits and hardware features (including DNC) are software-locked to the generation and cannot be retrofitted by simply loading different EPROMs without matching PLC/PCP firmware.
TEA1 / TEA2 machine-data files, and the PCP (PLC program) checksum before assuming a feature is missing due to a hardware fault rather than a software-version limitation.DNC and Drip-Feed: Why GA1 Cannot Drip-Feed
DNC (Direct Numerical Control) — more precisely drip-feed on early Sinumerik platforms — refers to streaming part-program blocks from a host PC (or network buffer) into the NC one block (or several blocks) at a time. The 810M uses the V.24 (RS-232C) interface on the MMC/serial board for this purpose.
Field-confirmed limitation:
- GA1 does not support drip-feed / DNC. The functionality is gated by the system software generation, not by the option-bit structure. Even with all option bits set in the TEA machine data, GA1 firmware will reject or simply ignore drip-feed mode selections.
- GA3 supports drip-feed. Earlier shop-floor reports describe successful DNC on GA3 systems via the same V.24 port, using Siemens' standard protocol (typically 9600 baud, 7 data bits, even parity, 2 stop bits, XON/XOFF or RTS/CTS handshake depending on the cable).
For a Terco CN45 with GA1 and ~64 KB of program memory, the practical workarounds are:
-
Sub-program partitioning. Split long G-code into a main program that calls many short sub-programs loaded in the 64 KB part-program area. Use
CALL/RETorL/LLsubprogram conventions to chain operations. -
Batched RS-232 transfer. Send programs in segments using the standard
%_N_xxx_MPF/%_N_xxx_SPFfile framing the 810M expects over the serial port, then manually trigger@RUNfrom the HMI keyboard. - GA3 upgrade. Replacing the system EPROMs with GA3 firmware plus matching PLC PCP and re-loading all TEAs is a non-trivial upgrade. It also requires the matching option-bit license. This path is rarely economical for a third-hand educational mill.
Part Program Memory Architecture
The 810M part-program memory is a contiguous battery-backed SRAM region on the NC CPU board. The available user space is not fixed; it is the result of three interacting factors:
- Hardware SRAM size on the CPU board (typically 64 KB, 128 KB, or 256 KB depending on the installed memory expansion chip).
- System software overhead — the GA1/GA2/GA3 firmware reserves a fixed buffer for runtime data, tool tables, and zero-point offsets.
- Option-bit configuration read from the TEA machine-data set, which can release or reserve additional blocks of memory for part programs.
When a controller is first commissioned (or after a battery-backed memory loss / cold start), the firmware reports a default free-part-program size. On a Terco CN45 with GA1 SW 3.x and no option bits set, the system reports approximately 15 KB free — the remainder of the SRAM is treated as reserved / not present until the option bits are properly set and the part-program memory is reformatted.
Memory Expansion: The Two-Bit Trick
Siemens uses an option-bit field inside the TEA (Teileinrichten / machine data) record to enable software features. Two distinct bits in this field control how much of the physical SRAM the system releases for part programs. Setting these bits alone is not sufficient — the system will only act on the new memory size after a reformat of the part-program area.
Documented behavior from field commissioning on the Terco CN45:
| Configuration | Reported Free Part-Program Memory |
|---|---|
| Stock GA1, default option bits, no reformat | ~15 KB (default free area) |
| Default option bits, reformat performed | ~15 KB (unchanged — no memory released) |
| Memory option bits set, but reformat not yet run | ~15 KB (system still uses old layout) |
| Memory option bits set and reformat performed | ~64 KB (full logical user area released) |
The two memory-related bits are not "public-domain" documented in the open operator's manual; their exact positions in the TEA record must be derived from a working reference machine. The pragmatic field procedure is:
- Capture a known-good TEA dump from a working 810M GA1 with the full 64 KB free.
- Diff the unknown machine's TEA against the known-good one in a hex editor or text diff.
- Toggle the suspect bits and reload the TEA via the serial port using the standard Siemens upload utility.
- Reformat the part-program memory (see procedure below) and observe the new free-memory value on the HMI.
Reformat Procedure (HMI Sequence)
The exact menu navigation depends on the HMI software level, but the standard GA1 sequence is:
- From the Setup menu, enter the password (default:
1111on most 810M trainers, or a Siemens-issued PIN for production units). - Navigate to NC-Memory → Format Part Program.
- Confirm the prompt "All part programs will be erased. Continue?"
- Wait for the system to perform the format. The HMI will display the new free-memory figure once complete.
- Reload all production part programs from the PC via the V.24 interface.
If the free-memory value does not change after the reformat, the option bits in the TEA have not been read by the system at boot. Power-cycle the controller, let the system re-initialize the option-bit table from the TEA, and then repeat the reformat.
Language Module EPROMs: Hardware, Layout, and Limitations
The 810M stores HMI display strings and alarm text in dedicated language EPROMs on the operator-panel interface board. On Terco CN45 machines, these are typically 27C256 or 27C512 EPROMs, populated as a matched pair (or quad, on systems with both Swedish/Finnish + English). The HMI runtime alternates between the EPROMs on a per-character basis — the first character of every string is read from EPROM A, the second from EPROM B, the third from EPROM A, and so on.
This interleaved character layout is the reason ad-hoc in-place translation is impractical. Modifying even a single language string requires re-burning both EPROMs while preserving the original bit-pattern for the characters that are not being changed. A blank spare EPROM cannot simply be programmed with new strings — the controller's HMI firmware reads the string pointer table from a fixed offset and expects the interleaved layout to be exact.
Practical options for obtaining a Finnish/English module:
- Siemens spare-part order. A factory Finnish (or English/Finnish) language module is still orderable through Siemens spare-parts channels at the time of writing, typically in the region of 800 EUR plus VAT for the EPROM set plus license sticker. This is the only path that guarantees checksum-valid system behavior.
- Donor machine EPROM read. If a donor 810M with the required language can be sourced, the EPROMs can be read on a standard EPROM programmer and cloned. Verify the EPROM type, capacity, and access time before cloning — mismatched access times cause intermittent HMI glitches on cold start.
-
PCA-based partial string patch. Siemens provides a utility path (
%PCA/ patch data area) for modifying a small subset of alarm and message strings without re-burning language EPROMs. This is a workaround, not a full language replacement, but it can make the most painful Swedish-only messages readable.
Serial Communication (V.24 / RS-232) Configuration
The 810M's serial port is used for both program transfer and TEA/PCP upload/download. Typical working parameters for a Terco CN45 with GA1 SW 3.x are:
| Parameter | Typical Value | Notes |
|---|---|---|
| Baud rate | 9600 | Also valid: 4800, 2400, 1200. 19200 sometimes works on GA3 only. |
| Data bits | 7 | Siemens protocol uses ASCII part programs with 7-bit characters. |
| Parity | Even | Some installations report No-parity working; Even is the documented default. |
| Stop bits | 2 | Use 1 only if the host software is set to 1 — mismatch causes intermittent framing errors. |
| Handshake | XON/XOFF or RTS/CTS | Match the host PC terminal emulator exactly. |
| Cable | Siemens 6FC9341-1AA or null-modem equivalent | Pinout: Tx/Rx crossed, RTS/CTS crossed, DTR/DSR crossed, chassis ground only. |
The 810M expects program files framed with Siemens' standard header/footer syntax:
%_N_<progname>_MPF
;$PATH=/_N_MPF_DIR
<G-code body>
M30
%
For subprograms, replace _MPF with _SPF and the directory with /_N_SPF_DIR. A missing _MPF / _SPF marker is the most common reason the controller "uploads but won't run" after a transfer.
Troubleshooting Matrix
| Symptom | Likely Cause | Verification | Fix |
|---|---|---|---|
| Free memory stuck at 15 KB after reformat | Option bits not set in TEA, or TEA not re-read at boot | Compare HMI reported free size before/after power-cycle + reformat | Edit TEA memory bits, power-cycle, reformat |
| No drip-feed / DNC option in HMI menu | GA1 firmware — DNC is not available on this generation | Check SW version stamp on system EPROM | Use sub-program partitioning or batched transfer; or upgrade to GA3 |
| HMI displays Swedish / unwanted language | Language EPROM set is for the wrong region | Read EPROM label; cross-check language code in %PCA
|
Order Siemens language module (~800 EUR) or source donor EPROMs |
| Serial transfer works for TEAs/PCPs but programs fail to run | Missing %_N_..._MPF / _SPF header |
Open file in a text editor; verify header and trailing %
|
Re-send with correct Siemens file framing |
| Memory loss after machine powered down | Battery-backed SRAM coin cell dead | Measure battery voltage on NC CPU board (typ. 3.0–3.6 V) | Replace lithium cell with controller powered; verify TEAs after replacement |
| Reformat completes but free size unchanged | System did not re-read TEA option bits at boot | Power-cycle and retry reformat once | Recompute option bits in TEA, full power cycle, reformat |
Field Commissioning Checklist for a Terco CN45 / 810M GA1
- Confirm the SW version on the system EPROM label (e.g. SW 3.1, 3.2, 3.3) and record it.
- Upload a current copy of
TEA1andTEA2via V.24 to a PC and store as a known-good baseline. - Upload a current copy of the
PCP(PLC program) to a PC and store. - Upload a current copy of all part programs (
.MPF/.SPF) to a PC. - Verify the lithium backup battery voltage on the NC CPU board (typ. > 3.0 V under load).
- Diff the TEA against a known-good reference to identify the two memory option bits.
- Edit the TEA, upload it to the controller, power-cycle, and reformat the part-program memory.
- Confirm the HMI shows ~64 KB free.
- Re-load the part programs from the PC backup.
- Test a dry-run program (M00 / single block) before returning the machine to production.
Safety and Compliance Notes
Working inside a Sinumerik 810M controller cabinet exposes mains voltages on the operator-panel and power-supply subassemblies. Always isolate and lock out the machine at the upstream disconnect before opening the cabinet, and verify absence of voltage with a properly rated meter. EPROMs and the lithium backup cell are sensitive to electrostatic discharge; use a grounded wrist strap when handling them.
For production environments subject to machinery-safety directives, any modification to NC option bits or PLC PCP code must be reviewed against the original CE technical file and the machine's risk assessment. Enabling additional part-program memory alone does not alter the safety category of the machine, but any related change to PLC logic can.
FAQ
Does the Sinumerik 810M GA1 support DNC drip-feed from a PC?
No. DNC/drip-feed is gated to GA3 system software. GA1 firmware does not expose the drip-feed menu and will not execute a streamed program even with the option bits set in the TEA. Upgrade to GA3 firmware or use sub-program partitioning within the ~64 KB part-program memory as a workaround.
How do I expand part-program memory from 15 KB to 64 KB on a 810M GA1?
Edit the two memory-related option bits in the TEA machine-data file, upload the TEA to the controller via the V.24 port, power-cycle the system, and reformat the part-program memory from the Setup menu. After the reformat the HMI will report the new free size, typically ~64 KB.
Why does my reformat not change the free part-program memory?
The most common reason is that the system never re-read the option bits at boot. After uploading a modified TEA, perform a full power cycle (not just a soft reset) so the firmware rebuilds the option-bit table, then run the reformat a second time. If the size is still 15 KB, the TEA edit did not actually flip the memory bits — diff against a known-good reference.
Can I rewrite the language EPROMs to display Finnish or English instead of Swedish?
In principle yes, but the language EPROMs use an interleaved character layout (odd characters on one EPROM, even characters on the other) with a fixed pointer table, so ad-hoc edits are error-prone. The reliable paths are ordering a Siemens language module (historically around 800 EUR plus tax) or cloning the EPROMs from a donor machine with the required language installed.
What serial settings are required to upload part programs to the 810M?
Use 9600 baud, 7 data bits, even parity, 2 stop bits, with XON/XOFF or RTS/CTS handshake matching the host PC. Each part program must be framed with the Siemens header %_N_<name>_MPF (or _SPF for subprograms) and closed with a trailing %; missing framing is the most common cause of "transfers successfully but won't run" behavior.