Skip to content

Siemens S7 Setup

This page is intended for both platform engineers configuring a Siemens S7 machine in Enture and for third-party PLC programmers who need to know what data to expose.


Why S7 is different from FANUC

FANUC controllers expose a rich CNC API (FOCAS) over Ethernet that Enture can probe automatically — axes, spindles, programs, and all standard signals are discovered without any manual configuration.

Siemens S7-300/400/1200/1500 controllers use a general-purpose PLC memory protocol (S7comm). There is no standardised CNC namespace: every integrator or OEM places signals at different Data Block (DB) numbers and byte offsets. Enture must therefore be told exactly where to read each signal — this is the S7 Tag Map.


Step 1 — Add the machine

Follow the standard Adding a Machine guide. When prompted for Controller Type, choose Siemens S7.


Step 2 — Basic connection settings

In the Basic tab of the machine's edit form:

Field Value
IP Address PLC IP reachable from the edge computer
Port 102 (ISO-TCP — default, do not change)
Rack Rack number of the CPU module (usually 0)
Slot Slot number of the CPU module (usually 2 for S7-300/400, 1 for S7-1200/1500)

Finding rack/slot in TIA Portal

Open the device view in TIA Portal and hover over the CPU module. The rack and slot numbers are shown in the hardware properties panel. For most S7-300 installations the correct values are Rack 0, Slot 2.


Step 3 — Configure the S7 tag map

Open the S7 Tags tab (only visible when controller type is Siemens S7).

Quick start: Load Standard Template

Click Load Standard Template (DB100). This pre-fills 18 standard signals using the Enture DB100 layout described below. If your PLC programmer followed the Enture standard, you are done — save and move to Step 4.

Manual configuration

Each row in the tag map defines one signal:

Column What to enter
Signal Choose from the dropdown — this is the Enture signal name
DB Data Block number (e.g. 100)
Byte Offset Byte offset within the DB where this value starts
Data Type How the value is stored in the PLC (real, int, dint, bool, word, dword)
Bit Only for bool type — which bit within the byte (0–7)

Use Add Row to add more signals. The Delete button (trash icon) removes a row.


Step 4 — Mode encoding (optional)

The machine_mode signal is an integer in the PLC. Enture maps these integers to mode names using the following defaults:

PLC value Enture mode
0 AUTO
1 MDI
2 MANUAL
3 JOG
4 EDIT

If your PLC programmer used different values, expand the Mode Encoding section and add override rows. Example: if value 5 means the machine is in ALARM state, add 5 → ALARM.


Step 5 — Save and verify

Click Save on the S7 Tags tab. The updated tag map is pushed to the edge device within seconds via the cloud IoT channel — no restart of the edge process is required.

To verify, watch the edge logs:

[machine-001] Config updated via MQTT, poller restarted

Enture Standard DB100 Layout

This is the layout Enture recommends for all third-party PLC integrations. Providing this to your PLC programmer means zero manual tag mapping in the UI.

DB100 — Enture CNC Status Block
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Offset  Type   Signal               Unit / Notes
──────  ─────  ───────────────────  ──────────────────────────
0       BYTE   status_bits          See bit map below
2       INT    machine_mode         0=AUTO 1=MDI 2=MANUAL 3=JOG 4=EDIT
4       INT    alarm_code           Active alarm number; 0 = no alarm
6       INT    (reserved)
8       DINT   part_count           Cumulative parts produced
12      REAL   feed_rate            mm/min
16      INT    feed_override        %
18      INT    spindle_override     %
20      INT    rapid_override       %
22      REAL   spindle_speed        RPM
26      REAL   spindle_load         %
30      REAL   spindle_temp         °C
34      REAL   x_absolute           mm
38      REAL   y_absolute           mm
42      REAL   z_absolute           mm
46      REAL   depth_of_cut         mm
50      REAL   cycle_time_last_s    seconds (time of the last completed cycle)
54      DINT   program_number       Active O-number / program number
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Status bits (byte 0):

Bit Signal name Meaning when 1
0 run_state Machine cutting / program running
1 (reserved)
2 alarm_active Alarm is present
3 emergency_stop E-stop engaged

What to tell your PLC programmer

Provide this section verbatim if a third-party PLC programmer is instrumenting the machine.


Minimum required signals

The following signals are required for core OEE and status monitoring:

Signal DB Offset Type Bit Description
run_state 100 0 bool 0 1 when machine is cutting
part_count 100 8 dint Cumulative part counter
feed_rate 100 12 real Current feed rate in mm/min
Signal DB Offset Type Bit Description
machine_mode 100 2 int 0=AUTO, 1=MDI, 2=MANUAL, 3=JOG, 4=EDIT
alarm_active 100 0 bool 2 1 when any alarm is active
emergency_stop 100 0 bool 3 1 when e-stop is pressed
alarm_code 100 4 int Active alarm number
feed_override 100 16 int Feed override %
spindle_override 100 18 int Spindle override %
rapid_override 100 20 int Rapid override %
spindle_speed 100 22 real Spindle speed in RPM
spindle_load 100 26 real Spindle motor load %
spindle_temp 100 30 real Spindle temperature °C
x_absolute 100 34 real X axis absolute position mm
y_absolute 100 38 real Y axis absolute position mm
z_absolute 100 42 real Z axis absolute position mm
depth_of_cut 100 46 real Current depth of cut mm
cycle_time_last_s 100 50 real Last completed cycle time seconds
program_number 100 54 dint Active program/O-number

Notes for the PLC programmer

  • Use DB100 as the Data Block number if possible (makes template loading instant for the machine operator).
  • The part_count register should be a cumulative counter — never reset it automatically. The platform calculates deltas.
  • The cycle_time_last_s register should be updated at end-of-cycle with the duration of the last completed part cycle in seconds.
  • The status_bits byte at offset 0 can map to any bits in an existing status byte — just tell the Enture engineer which bits correspond to run_state, alarm_active, and emergency_stop if they differ from the standard.
  • Values are polled every 5 seconds via S7comm ISO-TCP (port 102). Ensure the PLC firewall allows connections from the edge computer IP.