Copying Main Programs on SINUMERIK 810M GA3: %915 to %920

David Krause13 min read
Other TopicSiemensTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

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.

  1. NC in STOP — The control must be in the RESET or STOP state. Active program execution locks the editor.
  2. No editor open on the source — Close any open edit session on %915 before navigating to PROGRAM HANDLING.
  3. 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 %915 plus 10% headroom.
  4. Operator password level — Program management is generally available at password level 3 (user) for copy and at level 4 (service) for protected programs if %915 sits in a reserved range.
  5. 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.
Note: On the 810M GA3, the % 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).

  1. From the main operating-area menu, press the PART PROGRAM softkey (top horizontal softkey bar).
  2. Press the PROGRAM HANDLING vertical softkey. The directory of % programs and L subprograms is shown, along with the free-memory line.
  3. Position the cursor on the PROGRAM NAME input field at the bottom of the screen.
  4. Type the assignment: %915=%920
    The format is SOURCE = DESTINATION. The = character is the standard Siemens assignment operator for the PROGRAM HANDLING softkey COPY.
  5. Press the SK: COPY softkey. The control reads %915 from SRAM, allocates a new directory entry %920, and writes the byte stream.
  6. Wait for the prompt "Copy completed" (or the equivalent national-language string — German "Kopieren beendet", English "Copy completed").
  7. Open the directory and confirm that both %915 and %920 appear 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.

Caution: The copy is a one-shot non-transactional SRAM write. A power loss between the directory commit and the data write can leave a half-written %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.

  1. Open PART PROGRAM → PROGRAM HANDLING.
  2. Type L71 = L72 in the PROGRAM NAME field.
  3. Press SK: COPY.
  4. Verify by listing the directory — L72 should appear immediately under L71 with 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 via GOTOB Nxx / GOTOF Nxx within the cycle.
  • R parameters — compute variables. The user's cycle uses R901, R902, R903 … as the user-visible parameter interface and R0..R99 as the cycle's scratch range.

To modify the new program:

  1. Open PART PROGRAM → EDIT and select %920.
  2. 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.
  3. 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).
  4. Type the new value and press INPUT or SK: MODIFY. Press SK: SAVE to commit the block.
  5. 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.
  6. To add a new R parameter, append a new N block at the end of the parameter section and assign the R-variable. Ensure the cycle's branch targets still resolve; if not, add a GOTOB to the new N block.
Note: The 810M GA3 does not have a true "undo" buffer for SRAM-resident programs. Save a copy of %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:

  1. 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).
  2. 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
  3. On the 810M GA3, navigate to PART PROGRAMDNC 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.
  4. 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).
Warning: Do not change the parity on the 810M GA3 side. The default is even, and the control's V.24 driver does not perform parity regeneration. A PC configured for "no parity" will upload files that the control silently rejects with no alarm — the directory just does not update.

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.

Field tip: If the directory on the 810M GA3 shows "Receive error" repeatedly, the most common cause is a missing bridge between DSR and DTR. The 810M GA3 will not assert DTR the way a PC does, so the bridge is mandatory on the control end of the cable.

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.

  1. Directory check. In PART PROGRAM → PROGRAM HANDLING, confirm %915 and %920 both exist with identical byte length.
  2. Bit-identical check. SK: COMPARE between %915 and %920 on a freshly copied file (before any edits) should report "Identical".
  3. Header inspection. Open %920, scroll to the first 10 lines, and confirm the program name comment block reads ;%MP920 or similar — Siemens automatically updates the internal header on copy.
  4. R-parameter read-back. In AUTO → R PARAMETERS, scroll to R901..R999 and confirm the new values are present. If the old values are still shown, the cycle is re-initialising from %915; check the call chain.
  5. Dry-run execution. Set DRY-RUN ON, select %920 in AUTO, and single-block through the first 20 blocks. Watch the actual-value display for the expected R-parameter values to be loaded.
  6. Archive to PCIN. Send %920 from the control to PCIN with file extension .MPF. This is the recovery point.
Manual availability. The SINUMERIK 810M GA3 Programming Manual is published by Siemens in German, English, Spanish, Italian, and Chinese. Turkish is not part of the standard documentation set. Local Siemens representatives can sometimes arrange an unofficial translation through an integration partner, but a printed Turkish manual is not a stock item.

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.

Back to blog