Tracking LOGO! 8 Local Variable Memory in Soft Comfort

David Krause12 min read
HMI ProgrammingSiemensTutorial / 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

Tracking Local Variable Memory in LOGO! 8 with Soft Comfort

Siemens LOGO! 8 logic modules expose a flat variable-memory (VM) address space shared by every FBD/LAD program block, by the HMI display variables, by network inputs (NI), by network outputs (NQ), and by their analog counterparts (NAI/NAQ). Engineers frequently need a consolidated listing of every local VM byte that a program actually references; however, the GUI tools in LOGO! Soft Comfort V8.x do not provide a single "References" pane equivalent to STEP 7's cross-reference. This article details every supported technique for enumerating used VM locations, exporting the data to a spreadsheet, and verifying that no two blocks collide on the same byte or bit. The official LOGO! 8 System Manual and the LOGO! Soft Comfort Online Help are referenced throughout.

1. LOGO! 8 VM Memory Model Overview

The LOGO! 8 BM (base module) and the LOGO! 8.3 BM (BT variant for cloud connectivity) keep three classes of data in non-volatile RAM: function-block local data, VM, and the SD-card project file. Of these, VM is the only class that survives a power cycle without re-initialization; function-block local data is regenerated on every cold start. The VM address space is fixed per firmware family and is identical across LOGO! 8 (6ED1052-xxx08-0BA1/BA2), LOGO! 8.1, LOGO! 8.2 (FS:04 and later), and LOGO! 8.3 (6ED1052-xxx08-0BA3).

Table 1 - LOGO! 8 VM address space (firmware ES8 / ES9)
Symbol Range Type Default Width
M (digital flag) M0 - M127 Bit 1 bit
VM (digital flag) VM0.0 - VM1023.7 Bit-addressable byte 1 bit
AM (analog flag) AM0 - AM63 Word 16 bit
AVM (analog flag) AVM0 - AVM127 Word 16 bit
NI / NQ (network) NI1 - NI64, NQ1 - NQ64 Bit 1 bit
NAI / NAQ (network) NAI1 - NAI32, NAQ1 - NAQ32 Word 16 bit

Local variable memory in the LOGO! Soft Comfort context refers to the NI, NQ, NAI, and NAQ bytes plus any VM byte that the user has hard-coded as a constant on a function-block input/output pin. The "VM mapping" function inside the editor only shows the function-block-to-VM bindings when an address has been explicitly assigned in the parameter dialog; it does not enumerate the NI/NQ bytes consumed by the diagram for S7-style communication or by the LOGO! TDE/LOGO! Display. See the LOGO! 8 System Manual, chapter "Memory areas", for the authoritative map.

Important: Network inputs and outputs (NI/NQ) are also projected into VM by the runtime: NI1 = VM0.0, NI2 = VM0.1, and so on. Editing NI/NQ on a pin is therefore equivalent to editing a VM bit. The remainder of this article treats the two as a single addressable space.

2. Why the VM Mapping Tool Falls Short

Soft Comfort V8.0 through V8.4 ships a Parameter VM Mapping viewer (Tools > Parameter VM Mapping, or the icon in the toolbar). The tool reads the LSC file's parameter table and renders the byte/bit occupied by every block instance for which an explicit address was assigned under "Parameters > Parameter assignment". Blocks that use the default auto-allocation, or that read their input from a connector (x) and not from a named VM, are simply absent from the list. The same blind spot applies to NI/NQ used only as display tags on the LOGO! TDE.

For programs in the 50- to 200-block range this is rarely a problem; the engineer can keep a notepad. For modular projects split between two or three engineers, or for plants that have been modified in the field for ten years, manual tracking quickly becomes impossible. The next sections present three procedures that, in combination, recover a complete VM usage list without writing a script.

3. Procedure A: Enumerating NI/NQ via File > Print Preview

Print Preview is the only built-in Soft Comfort view that flattens every network input and output reference in the active project, regardless of whether the underlying block has a parameter assignment or not. The procedure below works on Soft Comfort V8.0, V8.1, V8.2, and V8.3.

  1. Open the project in LOGO! Soft Comfort.
  2. From the menu bar, choose File > Print Preview (shortcut: Ctrl+Shift+P).
  3. In the navigation tree on the left, expand the section labelled Variable assignment or, depending on the language pack, Variablenbelegung.
  4. The preview pane lists every NI, NQ, NAI, and NAQ that is referenced in the program. Each line shows the symbolic tag, the VM byte/bit (e.g., VM0.0), the direction (Input/Output), and the function block that drives it.
  5. Right-click the preview pane and choose Print... or Export to PDF to capture the list outside the editor.

Save the resulting PDF in the project folder under a name such as VM_list_2024-Q1.pdf. Engineers who need a machine-readable copy can run any standard PDF table extractor (Tabula, Adobe Acrobat Pro, or Power Automate) to lift the lines into CSV. Once in CSV, sort by VM address and check for duplicates with a simple =COUNTIF formula.

4. Procedure B: Bulk Block Properties

The Print Preview view does not list VM bytes that are only used as analogue flags (AM/AVM) or as parameters on blocks that the user hard-coded to a specific address. To recover those, open the editor-wide block inspector.

  1. From the menu, select Edit > Block Properties (all blocks).
  2. Sort the resulting table by the Parameter column. Any block whose parameter is bound to a VM byte will expose that binding in the Value column.
  3. Mark the rows that have a VM address and copy them to the clipboard (Ctrl+C).
  4. Paste into a spreadsheet; the data arrives as tab-separated columns by default.

Because Block Properties is a snapshot at the time of opening, repeat the procedure after every program revision and append the result to the cumulative CSV. The cumulative CSV becomes the project-wide cross-reference.

Note: Block Properties (all blocks) is read-only; it does not let you re-assign VM. Use it strictly as a documentation aid.

5. Procedure C: The VM Mapping Tool Itself

The VM Mapping tool still has a role: it is the only view that shows the function-block-to-VM binding for a single block in graphical form, which is useful when verifying that a UDF (User-Defined Function) macro is reading the byte you intended. Open it from Tools > Parameter VM Mapping or the toolbar icon. The dialog box lets you filter by:

  • Block family (timers, counters, analog math, etc.)
  • VM range (e.g., VM0.0 - VM15.7)
  • Direction (read / write)

The filter is helpful when confirming that no two analog flags are accidentally sharing a 16-bit word. If the filter returns zero entries, the corresponding VM region is unused in the project. The tool cannot, however, see NI/NQ that are wired only to the LOGO! Display; for those, fall back to Procedure A.

6. Building a Spreadsheet Cross-Reference

Once data has been collected by Procedures A, B, and C, merge it into a single table. The recommended columns are:

Table 2 - Master VM cross-reference columns
Column Source Example
Tag Symbolic name Pump1_Run
VM Address Byte.bit VM12.4
Type D = digital, A = analog, N = network D
Block Block instance name B007 / Counter 3
Pin Input/output pin S (set)
Comment Free text Hold from HMI
Last modified Date 2024-03-12

Add a Validation sheet that compares the cumulative VM list against the cumulative Print Preview list. Any address that appears in one and not the other indicates a block whose parameter assignment was changed without updating the documentation. This is the single most common cause of "phantom" overruns at site commissioning.

7. Network Input and Output Byte Layout

LOGO! Soft Comfort versions 8.0 and 8.1 exposed only 8 NI and 8 NQ per BM/EM. Starting with LOGO! 8.2 firmware FS:04 (Soft Comfort V8.2.0 build 9 and later) the limits rose to NI1..NI64 and NQ1..NQ64 for the master and each connected expansion module. The mapping is:

NI1  -> VM0.0      NQ1  -> VM8.0
NI2  -> VM0.1      NQ2  -> VM8.1
...
NI8  -> VM0.7      NQ8  -> VM8.7
NI9  -> VM1.0      NQ9  -> VM9.0
...
NI64 -> VM7.7      NQ64 -> VM15.7
NAI1 -> AVM16      NAQ1 -> AVM24
NAI2 -> AVM18      NAQ2 -> AVM26
...
NAI32 -> AVM78     NAQ32 -> AVM86

Knowing the static layout lets you scan the Print Preview list for any NI/NQ whose VM address falls outside the expected range - usually a sign of an SD-card import that was created on a different firmware level. The LOGO! 8 System Manual, section "Network variables", provides the same mapping in the official table.

8. Working with LOGO! 8.3 and the TDE / Web Editor

LOGO! 8.3 (order numbers 6ED1052-1xx08-0BA3) introduced a built-in web server that can display the same variable list as the LOGO! TDE. When the BM is set to Web server enabled in Tools > Ethernet Connections, you can navigate to http://<BM-IP> in a browser and view the assigned user-defined variables (UDV). The web page source is plain HTML, so a single grep on the served file is enough to recover the UDV list without launching Soft Comfort at all:

curl -s http://192.168.0.10/ | grep -oE 'VM[0-9]+\.[0-7]'

Scripting the curl in a nightly job produces a continuous audit trail independent of the developer's local Excel. The same technique applies to LOGO! 8.2 BT and LOGO! 8.3 BT modules configured for the Siemens LOGO! Cloud. The official product brief is on the LOGO! product page.

9. Programmatic Documentation: LSC File Format

A LOGO! Soft Comfort project (.lsc or, for V8.2+, .lscz) is a ZIP archive. Inside, logoProject.xml contains a <Variables> section that lists every NI, NQ, NAI, NAQ, and user-defined variable along with its VM binding. A short Python script can extract the table without Soft Comfort installed - useful for headless CI pipelines:

import zipfile, xml.etree.ElementTree as ET, csv

with zipfile.ZipFile('plant.lscz') as z:
    with z.open('logoProject.xml') as f:
        tree = ET.parse(f)
root = tree.getroot()
with open('vm_list.csv', 'w', newline='') as out:
    w = csv.writer(out)
    w.writerow(['Tag', 'VM', 'Type', 'Block'])
    for var in root.iter('Variable'):
        w.writerow([
            var.get('name'),
            var.get('address'),
            var.get('type'),
            var.get('blockInstance')
        ])

Run the script in a pre-commit hook so that every commit to the source-control repository refreshes the VM list automatically. The script also detects two variables that point to the same VM address and exits non-zero, blocking the commit. For full coverage combine the CSV with the Print Preview export from Procedure A.

Field tip: The .lscz extension is just a renamed ZIP. You can rename it to .zip and open it with any archive manager if you need to inspect logoProject.xml by hand. Project passwords are supported; strip them via File > Properties > Password before scripting.

10. Comparison: When to Use Each Method

Table 3 - Method selection matrix
Method NI/NQ covered? AM/AVM covered? Auto-format? Best for
Print Preview (Procedure A) Yes No PDF Full NI/NQ audit, every revision
Block Properties (Procedure B) No (only assigned ones) Yes TSV Audit of parameter-assigned VM only
VM Mapping (Procedure C) Partial Yes None Visual verification of one block
Web server (Section 8) Yes Yes (UDV only) HTML/curl Live plant audit, no Soft Comfort
XML script (Section 9) Yes Yes CSV CI/CD, change-control, large fleets

11. Firmware-Specific Caveats

  • FS:01 (V8.0): NI/NQ limited to 8 per module. Print Preview already includes them.
  • FS:02 (V8.1): S7-style network project limit raised to 16. Use the same Print Preview path.
  • FS:04 (V8.2.0 build 9): NI/NQ limit raised to 64. CSV export from Print Preview now includes NAI/NAQ.
  • FS:05 (V8.3): Adds the web server. The HTML page exposes every UDV - use it to audit deployments that have been in the field for years.
  • FS:06 (V8.4): Adds data-logger memory that is also visible in Print Preview under "Data Log VM". Add an extra column to your master sheet.
Safety: The VM list is documentation, not configuration. Changing a VM byte at runtime requires the LOGO! to be in Stop mode and is only supported for the BM; EMs reject online writes. Refer to the LOGO! 8 System Manual, chapter "Commissioning - VM edit", before attempting any online change.

12. Verification Checklist

  1. Open the project, choose File > Print Preview > Variable assignment and export to PDF.
  2. Open Edit > Block Properties (all blocks) and copy to the master spreadsheet.
  3. Open Tools > Parameter VM Mapping, set the filter to All blocks and confirm that no address appears twice in the resulting list.
  4. Run the XML script (Section 9) and diff the resulting CSV against the master spreadsheet. Any delta is a block that was added or renamed since the last export.
  5. For a LOGO! 8.3 deployment, browse the web server UI and confirm that the UDV list on screen matches the CSV row count.
  6. Sign and date the PDF, store it in the project folder, and commit both the PDF and the CSV to the same source-control repository as the .lsc file.

13. Troubleshooting Matrix

Table 4 - Common symptoms and remediation
Symptom Likely cause Action
Print Preview is empty under "Variable assignment" Project was saved with a pre-V8.0 schema Open the project in V8.3+ and re-save as .lscz
Block Properties shows no VM bindings Block parameters were left at "auto" Re-assign explicit VM, then re-export
VM Mapping shows an unexpected NI Block from a UDF macro still references the parent project's NI Open the UDF and edit the connector pin
NI/NQ exceeds 64 Project was authored on V8.0 then loaded in V8.3 Drop down to the V8.0 limit of 8 in V8.3, save, then re-open in V8.0 and re-save
Web server page returns 404 Web server disabled in Tools > Ethernet Connections Enable it, cycle power, retry
XML script returns "logoProject.xml not found" Project was compressed with a non-default password Re-save the project without password protection
Two blocks show the same VM address in master sheet Block parameter renumbering after copy/paste Edit the block, change VM to a free address, save, re-export
NI mapping differs from the documented offset Firmware was downgraded from V8.2 to V8.0 Re-author the project on the older editor and re-import on the field

14. Frequently Asked Questions

Does LOGO! Soft Comfort have a STEP 7-style "Reference Data" view?

No. The Print Preview Variable Assignment list is the closest equivalent, supplemented by the Block Properties dialog. For complete coverage use the XML export of the .lscz file as described in Section 9.

How many NI/NQ can a single LOGO! 8 BM have?

From firmware FS:04 (LOGO! 8.2) onwards the limit is 64 digital NI, 64 digital NQ, 32 analog NAI, and 32 analog NAQ per module. Earlier firmware versions are capped at 8 of each.

Are NI and VM the same address space?

Yes. NI1 maps to VM0.0, NI2 to VM0.1, and so on, up to NI64 at VM7.7. Editing one edits the other.

Can I export the Print Preview list to CSV directly?

Not from Soft Comfort itself. The print engine produces PDF, XPS, or paper output. Use any PDF table extractor (Tabula, Adobe Acrobat Pro, Power Automate) to obtain CSV.

Will renaming a tag in LOGO! Soft Comfort break my VM cross-reference spreadsheet?

Yes if you key the spreadsheet on the symbolic name. Key it on the VM byte/bit address instead; symbolic names are user-friendly but unstable across revisions.

Back to blog