Copying Main Programs on SINUMERIK 810M GA3: %915 to %920
The SINUMERIK 810M GA3 is a milling CNC from the late-1980s to mid-1990s Siemens generation that is still in service on induction heat-treatment cells, small job-shop mills, and older special-purpose machines. Although the operator panel exposes only a 9" or 12" monochrome CRT, the underlying file system is file-oriented and supports byte-level copying of part programs between identifiers. A common field task is duplicating a known-good main program such as %915 into a new identifier such as %920 so that R and N parameters can be edited without touching the original cycle.
This reference covers the exact keystrokes to copy %915 to %920, the same procedure scaled to subprograms (L71 = L72), the post-copy edit workflow for R-parameters and N-block identifiers, and the V.24/PCIN backup path documented in the Siemens Support case on backing up 810M GA3 via PCIN.
Prerequisites
Before the operator attempts the copy, the following conditions must be met. Skipping any of them produces "Program in use", "Memory full", or "Edit lock active" alarms and the softkey COPY is greyed out.
- NC in STOP — The control must be in the RESET or STOP state. Active program execution locks the editor.
-
No editor open on the source — Close any open edit session on
%915before navigating to PROGRAM HANDLING. -
Sufficient free SRAM — The target program memory is battery-backed static RAM. The free-memory line in the PROGRAM HANDLING directory must show at least the byte length of
%915plus 10% headroom. -
Operator password level — Program management is generally available at password level 3 (user) for copy and at level 4 (service) for protected programs if
%915sits in a reserved range. - No active DNC link — If the V.24 channel is in DNC, end the link from PART PROGRAM → DNC ON/OFF before performing the in-memory copy.
% identifier namespace is shared between user main programs and manufacturer cycles. Do not overwrite a cycle that the PLC is calling. Inspect the program header (;%MPF comment block) before assigning a new identifier.SINUMERIK 810M GA3 Program Memory Architecture
The 810M GA3 stores part programs in a battery-buffered static RAM (SRAM) module on the mainboard. Fitted capacity is typically 256 KB or 512 KB depending on the ordered memory option. The file system is a flat namespace and is case-insensitive. Programs are physically contiguous blocks; a copy operation in PROGRAM HANDLING performs a byte-for-byte duplication, leaving the source untouched and creating a new file with the same content but a new identifier.
| File class | Identifier prefix | Typical use |
|---|---|---|
| Main program |
%xxx (e.g. %915) |
Top-level part program, executable from AUTO |
| Subprogram |
Lxxx (e.g. L71) |
Called via L instruction or modal LL
|
| Tool offset | TOA |
Tool length and radius |
| Zero offset |
ZOA or G54..G59
|
Work offsets |
| R parameters | R0..R999 |
Compute / arithmetic variables, persistent |
| Settings data |
SEA / SEB
|
Machine parameters |
| Compile cycles | CCxxx.MPF |
Optional manufacturer cycles |
Program Identifier Conventions
The 810M GA3 uses an 8-character filename field. The first character is the type, the next three are numeric, and the last four are reserved for path/comment. On induction heat-treatment cells the following conventions are typical:
| Identifier | Class | Source description |
|---|---|---|
%915 |
Main (manufacturer or job cycle) | Original service-engineer program with N-block sequence and R-parameter interface |
%920 |
Main (new copy) | Operator's intended new program derived from %915
|
L71 |
Subprogram | Sub-routine called from %915 and parametrised by R901..R999
|
L72 |
Subprogram | New subprogram created by copying L71
|
Numeric ranges are not enforced as hard reservations; the operator can choose any free 3-digit suffix. Avoid %000..%099 — these are typically reserved for manufacturer cycles and PLC interface programs. Service-engineer cycles on the 810M GA3 commonly live in %900..%999; user jobs typically start at %100 and run upward.
Step-by-Step: Copying Main Program %915 to %920
The copy is performed entirely from the PART PROGRAM area. The keystroke sequence is taken from the SINUMERIK 810M GA3 Programming Manual, section 3.1.13.4 (page 3-61 in the printed edition).
- From the main operating-area menu, press the PART PROGRAM softkey (top horizontal softkey bar).
- Press the PROGRAM HANDLING vertical softkey. The directory of
%programs andLsubprograms is shown, along with the free-memory line. - Position the cursor on the PROGRAM NAME input field at the bottom of the screen.
- Type the assignment:
%915=%920The format isSOURCE = DESTINATION. The=character is the standard Siemens assignment operator for the PROGRAM HANDLING softkey COPY. - Press the SK: COPY softkey. The control reads
%915from SRAM, allocates a new directory entry%920, and writes the byte stream. - Wait for the prompt "Copy completed" (or the equivalent national-language string — German "Kopieren beendet", English "Copy completed").
- Open the directory and confirm that both
%915and%920appear with identical byte length.
If the target identifier already exists, the 810M GA3 raises a memory-class alarm in the 2000 series ("Program %920 already exists"). To overwrite, delete the destination first via SK: DELETE, then recopy. To preserve the original, change the target identifier to something free.
%920. On reboot the control raises a memory-consistency alarm and the bad file must be deleted via DIAGNOSIS → CLEAR PROGRAM. Use a UPS on the cell or perform the copy with the cell idle.Copying Subprograms (Lxxx to Lyyy)
Subprogram copy uses the same PROGRAM HANDLING area and the same softkey. The syntax is Lxxx = Lyyy, for example L71 = L72. The control treats L files as a parallel namespace and does not move the source; both files coexist.
- Open PART PROGRAM → PROGRAM HANDLING.
- Type
L71 = L72in the PROGRAM NAME field. - Press SK: COPY.
- Verify by listing the directory —
L72should appear immediately underL71with the same byte count.
If the calling main program (%915) hard-codes L71 by name, the original cycle still calls the original subprogram. To redirect the new main program to the new subprogram, edit the L call in %920 to L72, or use the R-parameter indirection that the cycle already supports.
Editing R and N Parameters in the Copied Program
The copied %920 is byte-identical to %915. To make it a different job, the operator edits the parameter block. The original cycle uses two layers of variables:
-
N parameters — block identifiers (sequence numbers).
N1,N2,N3, … are read by the control to branch viaGOTOB Nxx/GOTOF Nxxwithin the cycle. -
R parameters — compute variables. The user's cycle uses
R901,R902,R903… as the user-visible parameter interface andR0..R99as the cycle's scratch range.
To modify the new program:
- Open PART PROGRAM → EDIT and select
%920. - Use SK: GOTO to jump to
N1(or the first parameter block). The list of N-block addresses can be obtained with SK: BLOCK NUMBER. - Position the cursor on the R-parameter assignment, for example
R940 = 1200(induction-coil power setpoint in 0.1 kW units on the user's machine). - Type the new value and press INPUT or SK: MODIFY. Press SK: SAVE to commit the block.
- To delete a parameter block (e.g.
R940), the cleanest method is to overwrite its value with a sentinel that the cycle interprets as "skip", e.g.R940 = -1. The 810M editor cannot delete a single R-assignment line in isolation without re-numbering the N blocks. - To add a new R parameter, append a new
Nblock at the end of the parameter section and assign the R-variable. Ensure the cycle's branch targets still resolve; if not, add aGOTOBto the newNblock.
%920 to PCIN immediately after the parameter edits, before any further dry-run, so that an editor error can be recovered.R-Parameter Range and Reserved Blocks
| Range | Conventional use on 810M GA3 |
|---|---|
R0..R99 |
Cycle scratch / temporary compute |
R100..R199 |
User global compute |
R200..R249 |
Tool-length related compute on some cycles |
R900..R999 |
User-visible job parameters on the induction-heat cycle (R901..R999 are job setpoints) |
These ranges are convention, not enforced by the control. The user's 1996 service cycle used R901..R999 for the visible job interface, and that convention should be preserved when extending the cycle.
Data Backup and Transfer with PCIN over V.24
The 810M GA3 exposes a single V.24 (RS-232-C) interface on connector X6 (25-pin Sub-D, female on the control). All serial transfers — part programs, tool data, zero offsets, compile cycles, R parameters — go through this port. The recommended PC tool is PCIN, the free Siemens utility originally shipped with the SINUMERIK 810/820/840 documentation set.
The Siemens support case "Cannot transfer Back-up data to SINUMERIK 810M GA3" documents the typical install:
- Run PCIN on a Windows PC with a real COM port or a USB-to-RS-232 adapter that exposes a legacy COM number (FTDI-based adapters are the most reliable on Windows 10/11).
- Set the PCIN interface parameters to match the control:
Parameter Value Baud rate 9600 (19200 only on later GA3 firmware with handshake) Data bits 8 Parity Even Stop bits 1 Handshake RTS/CTS (XON/XOFF is not always implemented on 810M GA3) End-of-block character 1A hex (^Z) — Siemens default End-of-transmission 1A hex - On the 810M GA3, navigate to PART PROGRAM → DNC ON/OFF and confirm CHANNEL 1 is selected. The 810M GA3 has only one V.24 channel, but the menu uses the same dialog as later 810T/840C controls for consistency.
- From PCIN, initiate SEND (PC → 810M) or RECEIVE (810M → PC) as required. The file extensions that the 810M GA3 understands are
.MPF(main program),.SPF(subprogram),.TOA(tools),.ZOA(zero offsets),.TEA(machine data) and.SEA(setting data).
V.24 / RS-232 Null-Modem Cable Wiring
The 810M GA3 connector X6 is a 25-pin female Sub-D. A standard IBM-PC AT 9-pin male COM port requires a 25-to-9 adapter plus a null-modem crossover. The minimal pin map for the crossover is:
| Signal | 810M X6 (25-pin) | PC COM (9-pin) | Direction |
|---|---|---|---|
| TXD | Pin 2 | Pin 2 | 810M → PC |
| RXD | Pin 3 | Pin 3 | PC → 810M |
| RTS | Pin 4 | Pin 7 | 810M → PC |
| CTS | Pin 5 | Pin 8 | PC → 810M |
| DSR | Pin 6 | Pin 6 | PC → 810M (tie to DTR) |
| SGND | Pin 7 | Pin 5 | Common |
| DCD | Pin 8 | Pin 1 | PC input |
| DTR | Pin 20 | Pin 4 | 810M input (tie to DSR) |
Bridge DSR (pin 6) ↔ DTR (pin 20) on each end so the local handshake loop is closed. The cable shield should be bonded to the connector backshell at one end only to avoid ground loops on long cable runs.
Memory Management and Battery-Backed SRAM
The 810M GA3 SRAM is maintained by a lithium primary cell on the mainboard. When the battery is healthy the directory survives a power cycle; when it fails, all % and L programs, tool data, zero offsets and R parameters are lost.
| Battery state | Indication on HMI | Action |
|---|---|---|
| Healthy | No alarm, "Bat" LED lit on mainboard | Continue |
| Low (< 1 month runtime) | Battery warning alarm on HMI | Schedule replacement, perform PCIN backup immediately |
| Empty | Battery discharged alarm — SRAM cleared on next power-up | Replace battery with control powered, reload all data from PCIN archive |
Before any copy operation on a long-running cell, check the battery state in the DIAGNOSIS area. A copy against a failing battery can leave the new file half-written and unrecoverable.
To free space before a large copy, archive and then delete obsolete L subprograms via SK: DELETE in PROGRAM HANDLING. Do not delete a % program that the PLC references in the background — the next power-up will raise a "PLC program not found" alarm and the cell will not start.
Troubleshooting Matrix
| Symptom | Likely cause | Remedy |
|---|---|---|
| SK: COPY greyed out | Password level insufficient, or program in use | Set password 3 or 4, ensure NC in STOP and editor closed |
| "Program %920 already exists" alarm | Target identifier in use | Pick a free identifier, or delete the existing program after archive |
| "Memory full" on copy | Insufficient free SRAM | Archive and delete obsolete L programs; check battery state |
| Directory not updating after PCIN send | Parity / baud mismatch, DSR-DTR not bridged, wrong file extension | Verify PCIN 9600 8E1, bridge pins 6/20, use .MPF for % and .SPF for L
|
| "Receive error" loop on V.24 | Handshake not closed, missing DSR-DTR bridge | Solder the bridge, switch to RTS/CTS, lower to 4800 baud as a test |
Copy completed but %920 empty |
Power interruption during write, battery low | Replace battery, delete %920, recopy from %915 on a UPS-backed supply |
| R parameter does not update on cycle run | Wrong N block targeted, or modal R overwritten by the cycle prologue |
Use SK: GOTO to the parameter N block, verify with DRY RUN in AUTO |
Original cycle behaviour changed after editing %920
|
The PLC is calling %915, not %920, and the operator edited the wrong file |
Edit %920 only, leave %915 untouched; the copy is a separate file |
Verification
After the copy and the parameter edits, validate the new program with the following checks before any production heat-treatment run.
-
Directory check. In PART PROGRAM → PROGRAM HANDLING, confirm
%915and%920both exist with identical byte length. -
Bit-identical check. SK: COMPARE between
%915and%920on a freshly copied file (before any edits) should report "Identical". -
Header inspection. Open
%920, scroll to the first 10 lines, and confirm the program name comment block reads;%MP920or similar — Siemens automatically updates the internal header on copy. -
R-parameter read-back. In AUTO → R PARAMETERS, scroll to
R901..R999and confirm the new values are present. If the old values are still shown, the cycle is re-initialising from%915; check the call chain. -
Dry-run execution. Set DRY-RUN ON, select
%920in AUTO, and single-block through the first 20 blocks. Watch the actual-value display for the expected R-parameter values to be loaded. -
Archive to PCIN. Send
%920from the control to PCIN with file extension.MPF. This is the recovery point.
Frequently Asked Questions
Why does my SINUMERIK 810M GA3 show "Memory full" when I try to copy %915 to %920?
The SRAM is exhausted. Archive obsolete subprograms to PCIN, then SK: DELETE them in PROGRAM HANDLING. The free-memory line in the directory must show at least the byte length of %915 plus 10% headroom before the copy will proceed.
Can I copy a main program while the cycle is running?
No. The control must be in NC STOP or RESET, and the editor for %915 must be closed. Active program execution locks the PROGRAM HANDLING directory and the COPY softkey is greyed out.
What is the difference between %915=%920 and L71=L72?
The syntax is identical; the only difference is the namespace. %xxx is the main-program namespace (called from AUTO), and Lxxx is the subprogram namespace (called from inside a main program with the L instruction). Both operations are performed in PART PROGRAM → PROGRAM HANDLING → SK: COPY.
Is there a Turkish-language manual for the 810M GA3?
No. Siemens publishes the SINUMERIK 810M GA3 documentation in German, English, Spanish, Italian, and Chinese only. For Turkish-language support, contact your local Siemens representative to arrange translation through an integration partner.
Why does my PCIN transfer to the 810M GA3 silently fail?
The most common causes are a parity mismatch (the 810M GA3 expects even parity), a missing DSR-DTR bridge on the serial cable, or sending a file with the wrong extension. Use 9600 baud, 8 data bits, even parity, 1 stop bit, RTS/CTS handshake, .MPF for main programs and .SPF for subprograms.