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:
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 |
Recommended signals¶
| 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_countregister should be a cumulative counter — never reset it automatically. The platform calculates deltas. - The
cycle_time_last_sregister should be updated at end-of-cycle with the duration of the last completed part cycle in seconds. - The
status_bitsbyte at offset 0 can map to any bits in an existing status byte — just tell the Enture engineer which bits correspond torun_state,alarm_active, andemergency_stopif 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.