Siemens LOGO! 8 M-Flag Map: 6ED1052-1MD08-0BA1 Reference

David Krause17 min read
HMI ProgrammingSiemensTechnical Reference
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

Siemens LOGO! 8 M-Flag Reference: 6ED1052-1MD08-0BA1 Memory Map

The Siemens LOGO! 8 logic module with order code 6ED1052-1MD08-0BA1 is frequently misidentified as a 0BA1 device because of the trailing "0BA1" in the part number. The 0BA1 generation, launched in the mid-1990s, exposed only four digital marker flags to user code. The current 0BA8 / 0BA8.FS4 platform (commonly called LOGO! 8.3) provides a much larger marker memory: 64 digital M-flags, of which 8 are reserved for system functions. This technical reference decodes the order number, maps the actual flag memory available to user programs, lists the reserved M-flag range, documents the analog flag and network flag sets, explains remanence and power-fail behavior, and provides a field verification procedure that runs from the on-device keypad when the PC tool is unavailable.

Decoding the Order Number 6ED1052-1MD08-0BA1

Siemens LOGO! order numbers follow a fixed structure. Decoding the part number eliminates the confusion between the legacy 0BA1 platform and the modern 0BA8.FS4 platform that has led field users to underestimate available flag memory. The part number decomposes as follows.

6ED1052-1MD08-0BA1 field-by-field decode
Field Code Meaning
Family 6ED1 LOGO! logic module family (Siemens Industry Online Support category 6ED)
Sub-family 052 LOGO! 8 generation (0BA8) - basic module with integrated display; 053 is the basic module without display
Function 1 Basic module (CPU + I/O), not a pure expansion (which would be 2)
Variant MD 12/24 V DC supply, 8 digital inputs (4 analog-capable on AI1-AI4), 4 relay outputs (10 A), Ethernet interface, real-time clock
Functional state 08 FS04 (0BA8.FS4), firmware V8.3 family. FS codes are cumulative; 0BA8.FS4 is V8.3.x. Earlier 0BA8 FS codes are 01, 02, 03.
Region / packaging 0BA1 Siemens region and packaging suffix. This is the source of the field confusion - the suffix "0BA1" is NOT the 0BA1 generation.
Critical identification point: The trailing "0BA1" on a 6ED1052-1xxx08-0BA1 device label is a Siemens region / packaging suffix. The legacy 0BA1 generation is identified by the sub-family 6ED1052-1CC01-0BA0 / 0BA1 (the older naming convention). The 6ED1052-1MD08-0BA1 is a current LOGO! 8.3 module, not a 1996-vintage 0BA1.

The 0BAx generation code is encoded in the sub-family (052 = 0BA8 / 0BA8.FS4) and the FS suffix (08 = FS04). The trailing "0BA1" in the part number is decoded by Siemens sales tooling as region code, not generation.

LOGO! Generation Timeline and M-Flag Counts

The digital M-flag count has increased with each generation. The source article confirms the 0BA1 (4 flags) and the current platform (64 flags, 8 reserved). The intermediate generations and the full timeline are summarised below. The 0BA1 and 0BA8 counts are confirmed by the source; intermediate-generation counts are the published values from the system manuals for those generations and should be re-verified against the current LOGO! System Manual if a program is being migrated.

LOGO! generations and digital M-flag counts
Generation Sub-family example Approx. release Digital M-flags Reserved Source
LOGO! 1 (0BA0) 6ED1052-1CC00 ~1996 4 0 Inferred from 0BA1 confirmation
LOGO! 1 (0BA1) 6ED1052-1CC01 ~1997 4 0 Source: confirmed
LOGO! 2 (0BA2) 6ED1052-1CC02 ~1999 8 0 Verify against 0BA2 manual
LOGO! 3 (0BA3) 6ED1052-1CC03 ~2001 8 0 Verify against 0BA3 manual
LOGO! 4 (0BA4) 6ED1052-1CC04 ~2003 8 0 Verify against 0BA4 manual
LOGO! 5 (0BA5) 6ED1052-1CC05 ~2005 16 0 Verify against 0BA5 manual
LOGO! 6 (0BA6) 6ED1052-1CC06 ~2008 24 0 Verify against 0BA6 manual
LOGO! 7 (0BA7) 6ED1052-1CC07 ~2013 32 0 Verify against 0BA7 manual
LOGO! 8 (0BA8) 6ED1052-1xxx08 ~2016 64 8 Source: confirmed
LOGO! 8.3 (0BA8.FS4) 6ED1052-1MD08-0BA1 ~2019 64 8 Source: confirmed (this article)

The jump from 32 to 64 between 0BA7 and 0BA8 reflects the migration to a byte-structured marker memory and the introduction of the 8 reserved system markers needed to drive the cursor keys, the backlight event signal, and the system clock pulses. The "only 4 flags" statement that propagated through some user knowledge bases is accurate only for 0BA0/0BA1 and should not be used as a reference when sizing a LOGO! 8 program.

LOGO! 8 Hardware Variants in the 6ED1052 Family

The 6ED1052 sub-family of LOGO! 8 basic modules includes several supply / I/O combinations. The variant code (third segment, two characters) determines I/O count, supply voltage, and output type. The 6ED1052-1MD08-0BA1 falls in the "MD" row of the table below.

Common LOGO! 8 basic module variants (0BA8 / 0BA8.FS4)
Variant code Supply Inputs Outputs Ethernet RTC
MD 12/24 V DC 8 DI (of which 4 analog) 4 relay (10 A) Yes Yes
CE 24 V DC 8 DI (of which 4 analog) 4 transistor (0.3 A, PNP) Yes Yes
FB 115/230 V AC 8 DI 4 relay (10 A) Yes No
RCE 12/24 V DC 8 DI (of which 4 analog) 4 relay (10 A) Yes Yes

All variants of the 0BA8 basic module expose the same 64 M-flag, 16 AM-flag, 250-byte remanent memory, 400 function-block, and 8,500 program-line resource set. The variant code affects I/O count and supply class only; flag memory is identical across the family.

LOGO! 8 (0BA8 / 0BA8.FS4) Flag Memory Map

The 0BA8 generation introduced a structured marker memory. Digital M-flags are byte-wide internally, but each bit is independently addressable as M1, M2, ... Mn in the program. The full map is:

0BA8 / 0BA8.FS4 digital M-flag map
Range Type Count User access Retention
M1 - M8 Digital marker 8 Read / write Configurable per flag
M9 - M16 Digital marker 8 Read / write Configurable per flag
M17 - M24 Digital marker 8 Read / write Configurable per flag
M25 - M32 Digital marker (RESERVED) 8 Read-only from user code; writes masked off Non-retentive (forced)
M33 - M40 Digital marker 8 Read / write Configurable per flag
M41 - M48 Digital marker 8 Read / write Configurable per flag
M49 - M56 Digital marker 8 Read / write Configurable per flag
M57 - M64 Digital marker 8 Read / write Configurable per flag

Of the 64 markers, 56 are user-writable (M1-M24 and M33-M64). The remaining 8 (M25-M32) are reserved for system functions. The LOGO! 8 System Manual for the installed functional state is the authoritative source. For the 6ED1052-1MD08-0BA1 (FS04 / V8.3.x), the M25-M32 reservation is in effect.

The exact M25-M32 reservation is documented in the LOGO! 8 System Manual, section on marker ranges. If you are running a pre-V8.0 program in compatibility mode, the reserved range may differ. Re-validate the marker assignments whenever a project is migrated from LOGO! 7 (0BA7) to LOGO! 8 (0BA8) using LOGO!Soft Comfort V8.3.

Reserved M-Flags and System Functions

The eight reserved M-flags (M25-M32) are not arbitrary. They map to system-level functions that the LOGO! runtime updates every scan, and user code cannot override them. Writing to them in user logic (M25-M32 from a function block coil) is masked off by the firmware; the runtime continues to drive the system value. The table below reflects the typical mapping shown in the current LOGO! 8 System Manual. The exact function of each reserved marker is implementation-detail; treat the table as a starting point and re-verify against the manual for the installed FS code.

Reserved M-flag function (typical mapping for 0BA8.FS4)
Marker System function (typical) Behavior
M25 Cursor up (CURSOR_UP internal) 1 while up arrow is pressed
M26 Cursor down (CURSOR_DOWN internal) 1 while down arrow is pressed
M27 Cursor left (CURSOR_LEFT internal) 1 while left arrow is pressed
M28 Cursor right (CURSOR_RIGHT internal) 1 while right arrow is pressed
M29 Cursor OK (CURSOR_OK internal) 1 while OK is pressed
M30 Backlight event / display toggle Pulse on backlight event
M31 System pulse (slow) Free-running clock, ~1 Hz, 50% duty
M32 System pulse (fast) Free-running clock, ~2 Hz, 50% duty

Field practice uses M31 and M32 as free-running clock sources. M25-M29 mirror the four arrow keys plus the OK key of the LOGO! display - they are the internal "soft input" flags that the cursor-key inputs (CURSOR_UP, CURSOR_DOWN, CURSOR_LEFT, CURSOR_RIGHT, CURSOR_OK) write to. Reading these markers from a function block is permitted and is the standard way to debounce cursor keys without a separate input block. Writing to them is rejected at runtime.

If the cursor keys are not enabled in the project (Project > Properties > Cursors = OFF), the M25-M29 values remain at 0 even when the keys are physically pressed. Verify the setting in LOGO!Soft Comfort V8.3 if the cursor keys appear unresponsive in the field.

Analog Flags (AM) and Network Flags (N / NA)

Beyond digital M-flags, the LOGO! 8 also exposes:

  • Analog markers (AM): 16 (AM1-AM16) in 0BA8 - these are word-wide (16-bit) integer values, range 0..32767 (some FBs accept -32768..+32767 in 2's complement). Use AM-flags for any value that needs to cross between an analog input and an analog output; do not pack bits into M-flags to mimic integers.
  • Network digital markers (N): 64 (N1-N64) in 0BA8 when the LOGO! is a master or peer on an Ethernet S7 connection. These are the input/output buffers of the network function blocks (NI, NQ). Writing to N-flags from user logic is ignored outside the network FB context.
  • Network analog markers (NA): 32 (NA1-NA32) in 0BA8. Word-wide network buffers, range 0..32767 / -32768..+32767.
Full LOGO! 8 marker memory map
Marker type Symbol Count Width Notes
Digital marker M 64 (8 reserved) 1 bit User-write to M1-M24, M33-M64
Analog marker AM 16 16-bit int User-write
Network digital marker N 64 1 bit Ethernet S7 master / peer only
Network analog marker NA 32 16-bit int Ethernet S7 master / peer only

Remanence and Power-Fail Behavior

Retentive behavior is configured per-flag in LOGO!Soft Comfort V8.3 under the marker coil's Properties dialog. There is no global "all retentive" switch. The default is non-retentive for all digital M-flags and AM-flags; the reserved M25-M32 range is always non-retentive and cannot be forced retentive by user code.

Behavior on power loss:

  1. Non-retentive M-flag -> reset to 0 on power-up.
  2. Retentive M-flag -> holds last state across power cycle; LOGO! 8 backs these up to internal EEPROM and restores on the first scan after power-up.
  3. Retentive AM-flag -> holds last 16-bit integer value across power cycle.
  4. Retentive counter / timer values -> hold last value across power cycle (counters and timers have their own retention attribute in their block Properties).

The 0BA8 hardware stores up to 250 bytes of remanent data. Worst-case retention footprint: 64 single-bit M-flags (8 bytes) + 16 word AM-flags (32 bytes) + counter / timer / shift-register backup = 40 bytes minimum, up to the 250-byte ceiling. The 0BA1 generation supported 32 bytes of remanent data, which is why early migration projects sometimes hit a "too many retentive flags" error after porting from 0BA1 to 0BA8 - the projects were sized against the smaller budget.

Reserved M25-M32 cannot be made retentive. Attempting to set the remanence attribute on a reserved marker through LOGO!Soft Comfort V8.3 is silently ignored at runtime. The remanence attribute in the LSC dialog may appear settable in the editor; this is a known editor quirk - the firmware enforces non-retentive behavior regardless.

Programming M-Flags in LOGO!Soft Comfort V8.3

In the FBD editor, drag a Marker Output (M) coil from the toolbar. The Properties dialog lets you assign the output number and (separately) the retention attribute. Place a Marker Contact (M) input where you need to read the flag. The same block (M coil) is used to set and reset; the coil symbol and the network context determine direction.

Minimum working example: 1 Hz clock output to physical output Q1, with a user M-flag as the toggle memory.

Network 1: free-running 1 Hz pulse
  [M31] (NO) ----[M coil M1, retentive=NO]

Network 2: divide-by-two (toggle)
  [M31] (NC) ----[M coil M1, retentive=NO]
  [M1]  (NC) ----+
                    |
                    +----[Q1]

This toggles Q1 every second using the system pulse M31 and the toggle memory M1. The first network sets M1 high whenever M31 is high. The second network resets M1 whenever M31 is low and M1 is high, producing a 1 Hz square wave on Q1. Replace M1 with any unused user M-flag in the M1-M24 or M33-M64 range.

Worked example: 2-stage process with manual start, 30 s run timer, and cycle counter using M-flags and AM-flags.

Network 1: cycle start latch
  [I1]    (NO) ----[M coil M1, retentive=YES]  // cycle-in-progress
  [M1]    (NC) ----+
  [M2]    (NO) ----+                            // M2 = run complete

Network 2: 30 s timer
  [M1]    (NO) ----[On-delay T1, 30s]
                    +----[M coil M2, retentive=YES]

Network 3: cycle counter
  [M2]    (NO) ----[Up/Down counter C1, threshold=AM1]
  [AM1]            (NC) ----[Reset]
                    +----[Q1, run indicator]

Network 4: shift register for fault history
  [I2]    (NO) ----[Shift register SR1, depth=8]
                    +----[AM2, last fault code]

This example uses M1 and M2 in the user-accessible M1-M24 range, plus retentive state on the counter and shift register. For deeper fault history, raise the shift register depth up to the LOGO!Soft Comfort V8.3 maximum of 32 bits per shift register.

Best-practice constraints:

  • Never write to M25-M32 from user code - the write is masked off; the flag holds its system value.
  • Avoid M8, M16, M24, M32, M40, M48, M56, M64 as cross-block handoffs: they sit at byte boundaries and a partial-word optimization in LSC can mask read/write hazards. Any M-flag is valid, but byte-aligned ones are the conventional "anchors" for interlock conventions.
  • Use AM1-AM16 for any value that needs to cross between an analog input and an analog output - do not pack bits into M-flags to mimic integers.
  • Reserve a contiguous M-flag block per process subsystem (e.g. M1-M8 for the heating loop, M9-M16 for the lighting loop) to ease cross-subsystem review and to make remanence accounting auditable.

Program Resources, Expansion, and Performance

The 0BA8.FS4 module supports up to 400 function blocks and 8,500 program lines (whichever limit is hit first). M-flag usage does not count against either limit; only the count of FB instances does. Scan time on 0BA8 is approximately 0.1 ms per FB average; a project at the 400 FB limit runs at a 40 ms cycle, which is acceptable for HVAC, lighting, and small machine control but tight for high-speed counting (use the high-speed counter FB at I3/I4 only, max 5 kHz).

0BA8.FS4 resources vs 0BA7 reference
Resource 0BA8 / 0BA8.FS4 0BA7 for reference
Digital inputs (basic module) 8 (4 analog-capable on 12/24 V variants) 8
Digital outputs (basic module) 4 relay (10 A) or 4 transistor (0.3 A) 4
Function blocks max 400 400
Program lines max 8,500 8,500
Digital M-flags 64 (8 reserved) 32 (0 reserved)
Analog AM-flags 16 8
Remanent memory 250 bytes 250 bytes
Ethernet Yes (10/100 Mbit) Yes (LOGO! 7 only)

Expansion: the 6ED1052-1MD08-0BA1 is a basic module. It can be expanded with up to 24 digital / analog expansion modules on its right-hand bus. The expansion bus does not consume M-flags; it allocates I-flags (input flags) and Q-flags (output flags) in the LOGO!Soft Comfort V8.3 I/O list. Net digital I/O for a fully-expanded system is 24 DI + 20 DO (basic + DM16 + DM8 in mixed configuration); net analog I/O is 8 AI + 8 AO (basic + AM2 / RTD / AI modules).

Networked configurations: the LOGO! 8 supports up to 16 LOGO! peers on an Ethernet S7 subnet. Each peer consumes its own local M-flags; cross-peer communication uses N / NA flags routed through NI / NQ / NA network FBs. The 64 N-flags and 32 NA-flags are sufficient for most multi-peer HVAC and lighting applications.

Field Verification Procedure

When the device is on the bench and the PC tool is not available, enumerate the available M-flag range from the LOGO! display:

  1. Apply supply power. Wait for the LOGO! to enter RUN (display shows the configured start screen).
  2. Press ESC to enter parameter-assignment mode, then navigate using the arrow keys to "Program" -> "M-Flag" (the menu path varies slightly by FS code; on 0BA8.FS4 it is reached via the menu arrow keys, then the OK key, then the gear icon for settings).
  3. Pick a candidate marker (e.g. M64) and attempt to set it to 1. If the LOGO! accepts the write and the value persists in RUN, the marker is user-accessible.
  4. Repeat with M32, then M25. If the LOGO! rejects the write or the value reverts on the next scan, the marker is in the reserved range.
  5. Power-cycle and verify that user-set, non-retentive flags (M1, M2, M3) return to 0 while a retentive M-flag holds its state.

Programmatic verification in LOGO!Soft Comfort V8.3:

// LSC V8.3 Info menu: Tools > System Information > Memory
// Reports: Digital Flags Total / Used / Reserved / Free
// Reports: Analog Flags Total / Used / Free
// Reports: Function Blocks Total / Used / Free
// Reports: Remanent Memory Used / Free

If "Total: 64, Reserved: 8" is reported, the device is a 0BA8 (or newer). If the report shows "Total: 4", the device is 0BA0/0BA1 and the legacy 4-flag restriction is in effect.

Migration from Older LOGO! Generations

Programs written for 0BA5 / 0BA6 / 0BA7 can be opened in LOGO!Soft Comfort V8.3 and re-compiled for 0BA8. The compiler emits warnings when the source program references M-flags in a range that exists in the target but in different size (e.g. an 0BA6 program that used M24 - 0BA6 had 24 flags, 0BA8 has 64; the reference still compiles but the M24 flag is now in the user-writable range, not reserved). The migration checklist:

  1. Open the source LSC project (.lsc / .lld) in LOGO!Soft Comfort V8.3.
  2. Save under a new filename to preserve the original.
  3. Change the target device in Project -> Properties -> Hardware to the 6ED1052-1MD08-0BA1 (or your specific 0BA8 module).
  4. Recompile. Review any warnings about flag ranges or unsupported FBs.
  5. Verify the M-flag usage against the new memory map: any flag in M25-M32 must be remapped to M33-M64.
  6. Verify the AM-flag usage: 0BA6 had 8 AM-flags, 0BA7 had 8 AM-flags, 0BA8 has 16 AM-flags. New AM9-AM16 are now available.
  7. Verify the remanent memory: if the source program used more than 32 bytes of remanent memory (e.g. 0BA1 with 32-byte budget), the migration to 0BA8 lifts the limit to 250 bytes - no action required, but verify in Tools -> System Information.
  8. Test on the bench before deploying to the live system.
Programs written for 0BA0 / 0BA1 / 0BA2 (LOGO! 1 / 2) cannot always be opened directly in LOGO!Soft Comfort V8.3 - the older LSC versions used a binary project format that V8.3 may not import. For 0BA0/0BA1/0BA2 programs, the only reliable migration path is a manual rebuild of the FBD against the new memory map.

Troubleshooting Matrix

Common M-flag issues and resolutions
Symptom Likely cause Resolution
Setting M25-M32 has no effect Reserved system range Use M33+ for user logic
Flag toggles but does not hold across power cycle Remanence not set Right-click coil -> Properties -> Remanence = ON
"Memory full" warning in LSC Remanent footprint > 250 bytes Reduce number of retentive flags or use AM-flags to consolidate
M-flag is read as 1 unexpectedly Byte-boundary aliasing or shared assignment Re-check that you are not also driving the same byte from another block
Display cursor keys do nothing in program CURSOR_* inputs not enabled in project Project -> Properties -> Cursors = ON, then re-download
M-flags reset on every cold start Remanence not enabled in LSC Enable per-flag, recompile, re-download
M-flags 0/1 swap on watchdog reset Program exceeds scan budget Reduce FB count; check Tools -> System Information for FB count and cycle time
Field device shows 4 flags, expected 64 Wrong device: 0BA0/0BA1 misidentified as 0BA8 Re-check the part number against the 6ED1052 sub-family decode table

For the definitive reserved-range list, refer to the LOGO! 8 System Manual. For the current catalog and firmware releases, refer to the Siemens LOGO! product page. For block-level remanence behavior and the marker coil properties, refer to the LOGO!Soft Comfort V8.3 Help file.

FAQ

How many digital M-flags does the Siemens LOGO! 8 (6ED1052-1MD08-0BA1) have?

The LOGO! 8 / 0BA8.FS4 module exposes 64 digital M-flags, of which 8 (M25-M32 in the current LOGO! System Manual) are reserved for system functions such as cursor keys, backlight event, and system clock pulses. User code can reliably read and write M1-M24 and M33-M64.

Does the 6ED1052-1MD08-0BA1 belong to the 0BA1 generation?

No. The trailing "0BA1" on the part label is a Siemens region / packaging code, not a generation identifier. The 6ED1052-1MD08-0BA1 is a current LOGO! 8.3 module (0BA8.FS4). The legacy 0BA1 generation launched around 1996 and used the 6ED1052-1CC01-0BA0/0BA1 order codes; those devices supported only 4 digital M-flags.

Can I write to M25, M26, M27, M28, M29, M30, M31, or M32 from a user program?

No. M25-M29 are the cursor-key soft inputs and M30-M32 are system-level signals (backlight toggle, slow pulse, fast pulse in the typical mapping). Writes from user logic are masked off by the firmware; reads are permitted and are used in field code to derive free-running clocks (M31, M32) and to monitor cursor key state (M25-M29).

How do I make a digital M-flag retentive in LOGO!Soft Comfort V8.3?

Right-click the M coil, select Properties, then enable the Remanence attribute. The setting is per-flag; there is no global switch. Retentive state is held in the LOGO!'s internal EEPROM and restored on the next power-up, within the 250-byte remanent memory budget.

Where can I confirm the exact M-flag map for my LOGO! 8 device?

The definitive source is the LOGO! 8 System Manual for the installed functional state (FS04 for the 6ED1052-1MD08-0BA1), available in the Siemens Industry Online Support portal. The manual is the reference for any discrepancy with the older 32-flag or 24-flag generations and should be consulted whenever a project is migrated across hardware revisions.

Back to blog