Siemens S7-1500 series · Part 3

Siemens PLC Addressing and Data Types in TIA Portal (S7-1500)

In Part 2 every signal got a PLC tag and an address like %I10.0. Part 3 shows what those addresses mean and which data type each value needs: read any address, watch bits, bytes and words overlap, test values against every data type and build reusable UDTs, all interactively.

2,500+ engineers trained 4.9/5 Google rating 21+ years, Chinchwad, Pune Next batch: contact for dates
Quick answer

Every Siemens PLC tag lives at an address made of a memory area, a size, and a location: for example M10.0 is Memory area, bit 0 of byte 10, and DB1.DBX0.0 is bit 0 of byte 0 inside Data Block 1. The four working memory areas are I (Input), Q (Output), M (Bit memory/Merker) and DB (Data Block); each can be addressed as a single bit (.X), byte (B), word (W) or double word (D). On top of that address sits a data type — BOOL for a bit, BYTE/WORD/DWORD for raw bit strings, or INT/DINT/REAL for numeric values — which tells TIA Portal how to interpret and calculate with the value stored there.

  • Every Siemens address = memory area (I/Q/M/DB) + size (bit/byte/word/dword) + location, e.g. M10.0 or DB1.DBX0.0
  • BOOL is 1 bit; BYTE/WORD/DWORD are 8/16/32-bit raw bit strings; INT/DINT/REAL are numeric types built on those same sizes
  • S7-1200/S7-1500 optimized data blocks hide absolute offsets by default — you address tags by symbolic name, not by DBX/DBB numbers

The addresses below come from the conveyor project in Part 2: OPB push buttons on RIO_1, roller-bed contactors and the G120 drive. Each step has a live tool, with the full reference tables folded underneath.

01

Read Any Siemens Address: I, Q, M and DB

Every address is area + size + byte (+ bit). Type one, or pick an address from the Part 2 conveyor project.

Address reader
Reference: the four memory areas
AreaLetterPurposeTypical example
InputIPhysical/process input signals read from digital and analog input modules at the start of each scan cycleI0.0 — a start-pushbutton wired to input channel 0
OutputQPhysical/process output signals written to output modules at the end of each scan cycleQ0.1 — a motor contactor coil
Bit MemoryMInternal flags and working memory, not tied to any physical wiring — used for logic markers, timers, interlocksM10.0 — a "system ready" internal flag
Data BlockDBStructured, user-defined storage for tags, recipes, setpoints and instance data of function blocks; the main working area on S7-1200/1500DB1.DBX0.0 — bit 0 of byte 0 in Data Block 1
02

Bit, Byte, Word and Double Word: How They Overlap

MB10 to MB13 below are real memory. A word or double word is just a wider window on the same bits, and Siemens puts the high byte first.

Memory explorer › %MB10 … %MB13

Same bits, read as different addresses and types

Reference: bit, byte, word and double-word addressing
SizeSuffixWidthExampleTypical use
Bitnone (dot notation)1 bitM10.0, I0.3, Q0.1On/off signals, flags, interlocks
ByteB8 bitsMB10, IB0, QB4Small numeric values, thumbwheel/DIP switch banks
WordW16 bitsMW10, IW0, QW4Analog input/output raw values (0–27648 range), 16-bit counters
Double wordD32 bitsMD10, ID0, QD4REAL/DINT values — scaled process values, large counters

Want to practice addressing on real hardware?

Live TIA Portal session covering I/Q/M/DB addressing, data types and SCL programming — Pune classroom or online.

Book a Free Demo Class 03

Elementary Data Types in TIA Portal

The address says where, the data type says how to read it. Pick a type to see its size and range, then test a value against every type.

Data type explorer

Will it fit?

Reference: binary and bit-string types
TypeSizeDescription
BOOL1 bitA single true/false value — the type behind every dot-notation bit address
BYTE8 bitsRaw bit string, no numeric meaning by default — often used for status/diagnostic bytes
WORD16 bitsRaw 16-bit bit string — common for control/status words (e.g. drive STW1/ZSW1)
DWORD32 bitsRaw 32-bit bit string, used for wide status registers and bit-level masks
Reference: numeric types and ranges
TypeSizeRange (signed unless noted)Availability
SINT / USINT8 bits−128 to 127 / 0 to 255S7-1200, S7-1500
INT / UINT16 bits−32,768 to 32,767 / 0 to 65,535All families (UINT: S7-1200/1500)
DINT / UDINT32 bits−2,147,483,648 to 2,147,483,647 / 0 to 4,294,967,295All families (UDINT: S7-1200/1500)
LINT / ULINT64 bitsLarge signed/unsigned integersS7-1500 only
REAL32 bitsFloating-point, ~6–7 significant digitsAll families — the standard type for scaled process values
LREAL64 bitsDouble-precision floating-pointS7-1200, S7-1500
04

Symbolic vs Absolute Addressing and Optimized Data Blocks

S7-1500 data blocks are optimized by default: you access members by name only. Switch to standard access to see the fixed offsets that S7-300/400 code relies on.

Data block "PRB_1" [DB1]
NameData typeOffsetAbsolute addressSymbolic access
RunBool0.0%DB1.DBX0.0"PRB_1".Run
FaultBool0.1%DB1.DBX0.1"PRB_1".Fault
SpeedReal2.0%DB1.DBD2"PRB_1".Speed
Runtime_sDInt6.0%DB1.DBD6"PRB_1".Runtime_s
"PRB_1".Run := TRUE;✓ works in both
%DB1.DBX0.0 := TRUE;✓ works

Reference: absolute vs symbolic addressing
MethodWhat it looks likeWhere you'll see it
Absolute addressing%I0.0, %M10.0, %DB1.DBX0.0Older S7-300/400 style programs, standard (non-optimized) data blocks, cross-reference views
Symbolic addressing"StartButton", "Motor1_Run", "Recipe".SetTempEveryday S7-1200/1500 programming — TIA Portal shows the symbolic name while the absolute address sits underneath it
05

Complex Data Types: UDT, ARRAY, STRUCT and STRING

Define a PLC data type (UDT) once, then reuse it. One ARRAY[1..16] OF Motor_UDT gives every roller bed on the conveyor the same members.

Global DB "Conveyor"
Motor_UDTRun : Bool
Fault : Bool
Speed : Real
Runtime_s : DInt

Change the UDT once and all 16 instances update.

Reference: STRUCT, UDT, ARRAY and STRING
TypeWhat it isAddressing example
STRUCTAn anonymous grouping of different data types declared inline inside a single tag or block"Motor1".Status.Fault
PLC data type (UDT)A named, reusable structure template — define it once, then declare many tags of that type (e.g. one "Motor_UDT" reused for every motor)"ConveyorA".RunFeedback, "ConveyorB".RunFeedback
ARRAYA fixed- or variable-length list of elements, all of the same data type, addressed by index"Setpoints"[3], ARRAY[0..9] OF REAL
STRING / WSTRINGA sequence of characters with a maximum and current length header, used for text such as recipe names or alarm messages"BatchName" (STRING[20])

Quick Quiz: Siemens Addressing and Data Types

6 questions
Score: 0 / 6

1. Which address is bit 2 of input byte 10?

Byte first, then bit: %I10.2. Bits only go 0 to 7.

2. %MW10 covers which bytes?

A word is 2 bytes. %MD10 would cover MB10 to MB13.

3. You write MW10 := 1. Which bit becomes TRUE?

Siemens stores the high byte first, so the low byte of MW10 is MB11 and the value 1 lands in M11.0.

4. Best data type for a scaled tank level in mm with decimals?

Decimals need a floating-point type. SCALE_X outputs a Real.

5. A raw value of 40 000 fits in…

Int stops at 32 767. UInt goes to 65 535 (DInt also works).

6. %DB1.DBX0.0 only works when DB1 has…

Absolute DB addresses need standard (non-optimized) access.

Step-by-Step Lab: Addressing and Data Types in TIA Portal

Hands-on
Before you start
  • TIA Portal installed (V17 or later), any S7-1200 or S7-1500 project — a PLCSIM simulation is enough, no physical hardware required.
  • A CPU already added to the project, with the default PLC tag table open.
  • Basic familiarity with opening the PLC tags editor and a Data Block.
  • Estimated time: 12 minutes.
1

Create bit, byte and word tags in the PLC tag table

Open the default PLC tag table and add three tags: StartButton (data type BOOL, address I0.0), StatusByte (data type BYTE, address MB20), and SpeedSetpoint (data type INT, address MW22).

On screen: three rows in the tag table, each showing its symbolic name alongside the absolute address TIA Portal assigns.
All three tags compile without error, and MW22 is shown starting right after MB20/MB21 with no overlap warning.
2

Add a data block and compare optimized vs. standard access

Insert a new global Data Block, add a BOOL member and a REAL member, and check its properties. Note that "Optimized block access" is ticked by default. Untick it, and observe how the DB view changes.

With optimized access on, only symbolic names are shown. With it switched off, an Offset column appears showing absolute byte/bit numbers like DBX0.0 and DBD2.
3

Build a UDT and reuse it for two instances

Create a PLC data type named Motor_UDT with members Run (BOOL), Fault (BOOL) and Speed (REAL). Then declare two DB tags of this type: Motor1 and Motor2.

Both Motor1 and Motor2 expand in the tag tree to show identical Run/Fault/Speed members, addressed as "Motor1".Run and "Motor2".Run.
4

Trigger and read a data type mismatch error

In a new SCL block, try assigning the BOOL tag StartButton directly to the INT tag SpeedSetpoint (e.g. SpeedSetpoint := StartButton;) and compile the block.

Compilation fails with a data type mismatch error — read the exact wording, then fix it using a proper conversion instruction (e.g. BOOL_TO_INT) instead of a direct assignment.
Checkpoint — how to know you did it right

If Step 2 showed you the hidden DBX offsets appear only with optimized access off, and Step 4's compile error correctly blocked an invalid BOOL-to-INT assignment, you've demonstrated the two ideas this lesson is built on: addresses have a fixed structure whether or not TIA Portal shows you the offsets, and data types are enforced strictly at compile time. Keep tags symbolically named and correctly typed from the start — it's far cheaper than untangling a byte-overlap bug on the shop floor.

Frequently asked questions

Why does writing MW10 change M10.0?

MW10 covers bytes MB10 and MB11, and Siemens stores the high byte at the lower address. MB10 is the high byte of MW10, so M10.0 is bit 8 of the word. Any write to MW10 or MD10 also rewrites the bits M10.0 to M11.7.

Which data type should I use for an analog input?

The analog module delivers a raw INT, 0 to 27 648 for the nominal range. Scale it with NORM_X and SCALE_X into a REAL in engineering units such as mm or bar, and use the REAL in the program and on the HMI.

What do I, Q and M stand for in a Siemens PLC address?

I is Input (physical/process input signals), Q is Output (physical/process output signals), and M is Bit Memory or "Merker" — internal working memory not tied to any physical wiring. DB, Data Block, is where most structured tag data lives on S7-1200/1500 projects.

What is the difference between M10.0 and MW10?

M10.0 addresses a single bit — bit 0 of byte 10 in Bit Memory. MW10 addresses a 16-bit word starting at the same byte 10, covering bytes 10 and 11. Writing to MW10 changes the bits that M10.0 through M11.7 also point to, since they overlap the same memory.

What is the difference between absolute and symbolic addressing?

Absolute addressing uses the raw address directly, like %M10.0 or %DB1.DBX0.0. Symbolic addressing uses a human-readable tag name, like "StartButton", which TIA Portal maps to that same absolute address behind the scenes. Modern S7-1200/1500 programs are written almost entirely with symbolic names.

What does "optimized block access" mean for a data block?

It means TIA Portal manages the internal byte offsets of that DB automatically, so tags are addressed only by symbolic name with no fixed DBX/DBB layout. Turning it off restores standard access with visible absolute offsets, which some communication instructions and legacy code require.

Why can't I assign a BOOL value directly to an INT tag?

TIA Portal enforces data types strictly at compile time: a BOOL is a single bit with no numeric meaning, while an INT is a signed 16-bit number. A direct assignment between incompatible types is rejected; use an explicit conversion instruction such as BOOL_TO_INT if the conversion is genuinely needed.

Reviewed by Bhawesh Kumar Singh Industrial Automation Trainer and Industry 4.0 Consultant · Softwell Automation · 21+ years industry experience

Get the full syllabus + free demo class

Share your details — a Softwell training advisor will call you within 24 hours with batch dates, fees and hardware access options.

No spam. Used only to share course details for this enquiry.

Learn with practical industrial examples

Join live online, Pune classroom or corporate in-plant automation training.

Request Course Details
Verified learning pathway

Discuss This Technical Course

Explore practical curriculum, software, hardware and batch options for this technology.

Content reviewed: 1 August 2026

Siemens PLC & TIA Portal Learning Path

Continue with the related Siemens PLC tutorials in this practical learning series.

  1. SCL vs Ladder Logic
  2. Upload PLC Program
  3. TIA Selection Tool
  4. Analog Input Scaling
  5. PLC Counters
  6. PLC Timers
  7. Addressing & Data Types
  8. Hardware & PLC Tags
  9. OB, FB, FC & DB
☎ Call WhatsApp ✉ Email Enquire Now