Configuring Samkoon HMI Communication with Siemens S7-1200 PLC

David Krause12 min read
S7-1200SiemensTutorial / 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

Configuring Samkoon HMI Communication with Siemens S7-1200 PLC

Samkoon HMIs integrate with the Siemens S7-1200 family through the S7 communication protocol (PUT/GET) carried over ISO-on-TCP (RFC 1006) on TCP/102. Because third-party panels rely on absolute addressing rather than the symbolic tag binding used inside a TIA Portal project, the controller side must be configured to permit PUT/GET access, and any DB that the panel must read or write must be created without the "Optimized block access" attribute. This reference walks through every step required to bring up a stable link, then maps the field-proven failure modes to corrective actions.

1. Overview of the S7 PUT/GET Communication Path

PUT/GET is the oldest, simplest S7 user-data mechanism. The HMI (or any S7 station) opens an ISO-on-TCP connection to the CPU on TCP port 102, then issues PUT (write) and GET (read) requests against a partner CPU. The active partner specifies the remote slot and either a memory area (M, I, Q) or a data-block number, byte offset, and bit offset. No program block changes are required in the S7-1200 user program; the communication runs entirely through the system firmware of the CPU.

Because the protocol predates symbolic names, it is fundamentally absolute. Samkoon's S7-1200 driver works exactly the same way: the panel builds an S7 frame addressed to e.g. DB100.DBW0 and the CPU interprets the byte address against the runtime layout of DB100. If the DB is compiled with optimized access, the byte layout no longer matches the source order in TIA Portal and the panel reads garbage or returns an access error.

Table 1 — S7 PUT/GET Protocol Stack
Layer Implementation Default Port
Application S7 PUT/GET user-data functions —
Presentation S7 Communication (TPKT/COTP) —
Transport ISO-on-TCP (RFC 1006) 102
Network Ethernet / IPv4 —
Important: PUT/GET is independent of the S7-1200's protection level (read/write protection). Even when the CPU is set to "Full access (no protection)" or "Read access", PUT/GET must still be individually enabled under the "Connection mechanisms" group. This setting exists in TIA Portal from firmware V4.0 onward and is the most common reason a Samkoon panel will not connect.

2. Prerequisites and Compatibility Matrix

Before commissioning, verify the four components below match a supported combination. Mixed versions are a frequent source of intermittent "connection drop" or "object access error 0x8104" faults.

Table 2 — Verified Compatibility Matrix
Component Minimum Recommended Notes
S7-1200 CPU firmware V4.0 V4.5 / V4.6 PUT/GET setting added in V4.0; V4.4+ improves connection diagnostics
TIA Portal (engineering) V13 SP1 V18 / V19 Match portal major version to CPU firmware family
Samkoon configuration software SKTool V6.x or SKWorkshop V4.x SKWorkshop V4.5.x Use driver "Siemens S7-1200 (TCP)" or "S7-200/300/400/1200 Ethernet"
Firmware of Samkoon panel Build 2018+ Latest release Older builds lack S7-1200 driver or default to wrong port

Network prerequisites:

  • Both devices on the same IPv4 subnet (or routed through a managed switch without NAT).
  • CPU PROFINET interface configured with a static IP (DHCP disabled).
  • No firewall on the engineering PC or panel blocking TCP/102 outbound to the CPU.
  • Maximum of 8 simultaneous S7 PUT/GET connections per S7-1200 CPU. This is a hard firmware limit, not a project setting.

3. Network Topology and Addressing

A typical point-to-point deployment looks like the following. For multi-panel projects, place the CPU and all HMIs on the same PROFINET subnet so that the S7 connections are terminated directly by the CPU's integrated interface.

Samkoon HMI 192.168.0.10 TCP/102 client Switch S7-1200 CPU 192.168.0.20 Rack 0 / Slot 1

Note the rack/slot pair: the S7-1200 always lives at Rack 0 / Slot 1 for the integrated PROFINET interface. If you are connecting through a CP 1243 module instead of the onboard interface, change slot to the CP's slot in TIA Portal hardware catalog (commonly slot 2 or 3).

4. Enabling PUT/GET in TIA Portal

  1. Open the S7-1200 project in TIA Portal.
  2. Select the CPU device in the project tree and double-click Device configuration.
  3. In the device view, click on the CPU module (not the PROFINET port).
  4. Open the Properties pane → Protection & Security.
  5. Scroll to the Connection mechanisms section.
  6. Tick Permit access with PUT/GET communication from remote partner.
  7. Compile the hardware (right-click CPU → Compile → Hardware and software only) and download to the CPU.
Tip: The setting is stored as bit 0x01 in the CPU's SecurityConfiguration system data block. After download, verify with the CPU's online & diagnostics view that the option shows the green checkmark. Some V4.0 firmware versions silently revert the setting if the CPU is not restarted after the download — power-cycle once after the first write.

5. Configuring Data Blocks for Absolute Access

Each DB the Samkoon panel must touch must be created or modified with the Optimized block access attribute disabled. Without this, the absolute byte offsets compiled into the panel project will not match the CPU's runtime layout.

  1. Right-click the data block (e.g. DB100) in the project tree.
  2. Choose Properties.
  3. Open Attributes.
  4. Clear the checkbox Optimized block access.
  5. Confirm with OK.
  6. Recompile the software and download only the affected DB.

Once optimized access is off, the panel can address data using the standard S7 syntax:

Table 3 — Address Syntax Mapping
S7 Address Meaning Samkoon Tag Type
DB100.DBX0.0 Bool, DB100 byte 0 bit 0 Bit
DB100.DBW2 Word (INT), byte 2..3 16-bit signed
DB100.DBD4 DWord (DINT/REAL), byte 4..7 32-bit signed / float
DB100.DBB8 Byte, byte 8 16-bit unsigned (zero-extended)
MW0 Bit memory word 16-bit
M0.0 Bit memory bit Bit
IW0 / QW0 Process input / output word 16-bit (read-only for IW)

6. Samkoon HMI Project Configuration

The Samkoon configuration software (SKWorkshop) treats the S7-1200 as a polled client. Configure the connection once at project level; every tag you create inherits the same transport.

  1. Open SKWorkshop, create or open the project.
  2. Open System Settings → Device and select the correct Samkoon panel model.
  3. Open System Settings → Communication → New Link (or PLC Link in older builds).
  4. Choose driver: Siemens S7-1200 (Ethernet). If only a generic S7-200/300/400 driver is offered in your build, select that — the wire format is identical.
  5. Set the parameters:
Table 4 — Samkoon Link Parameters
Parameter Value Notes
IP Address 192.168.0.20 S7-1200 PROFINET IP
Port 102 ISO-on-TCP — do not change
Rack 0 Always 0 for S7-1200/1500
Slot 1 Onboard interface
Connection Type PUT/GET Not S7 Connection (HMI) — third-party panels cannot be the S7 server
Poll Interval (ms) 200–1000 Tune per number of tags; 500 ms default
Timeout (ms) 3000 Increase to 5000 over routed/wireless links
Retry Count 3 Higher values slow fault reporting

Save and download the project to the panel. The panel immediately attempts to open the ISO-on-TCP connection; check the panel's system diagnostic screen for a green connection indicator before continuing.

7. Tag Definition and Polling Strategy

Tag definitions in SKWorkshop bind a name (used inside the panel screens) to a CPU address. Always declare a unique memory area + offset pair; the panel does not validate the address against the CPU's symbol table, so duplicates silently overwrite each other.

Recommended tag layout for a small machine:

Table 5 — Recommended Tag Layout
Samkoon Tag Name Address Length Direction Purpose
bStart DB100.DBX0.0 1 bit R/W Start pushbutton
bStop DB100.DBX0.1 1 bit R/W Stop pushbutton
bRunning DB100.DBX0.2 1 bit R Run feedback
bFault DB100.DBX0.3 1 bit R Fault latched
iSpeed DB100.DBW2 16-bit R Actual speed (rpm)
iSetpoint DB100.DBW4 16-bit R/W Setpoint (rpm)
rTemp DB100.DBD6 REAL R Process temperature
wAlarmBits DB100.DBW10 16-bit R Alarm word

Optimization rules:

  • Group tags that change together into a contiguous block (e.g. all alarms in one word) so the panel can fetch them in a single PUT/GET request.
  • Reserve the lowest M-bit range (M0.0–M15.7) for HMI handshaking only; do not use it for logic that the CPU program also evaluates heavily, because every panel poll forces a memory write commit.
  • Use MW0 only for short status words, never for retentive counters; the panel may re-write the area on reconnect.

8. Retentive Bit Memory Considerations

Bit memory M in the S7-1200 can be declared retentive in TIA Portal under PLC → Properties → Retentive memory. The default retentive range starts at MB0. This has two practical consequences for third-party panels:

  1. If the HMI writes to a retentive MB and the CPU is power-cycled, the value survives. Use this for setpoints that should persist across reboots.
  2. If the HMI writes to a retentive bit during commissioning and the CPU is later reset to factory defaults, the retentive bits keep the last HMI value. Always perform a "Reset to factory" of the CPU before re-commissioning to clear stuck HMI state.
Warning: Setting the entire MB area retentive dramatically increases the wear of the CPU's internal flash and lengthens startup time. Limit retentive MB range to the bytes the panel actually writes. As a rule of thumb, no more than 32 bytes of MB should be retentive on an S7-1200.

9. Verification Procedure

After configuration, walk through these checks before declaring the link commissioned.

  1. Connection indicator: Samkoon system screen should show "Connected" or "Online" with no red fault icon.
  2. CPU side diagnostic buffer: In TIA Portal, go to Online & diagnostics → Diagnostic buffer. There should be no entry of class "Communication error" with text PUT/GET access denied.
  3. Tag round-trip test: Force DB100.DBX0.0 to TRUE in the CPU using a watch table. The bound Samkoon button should show the "pressed" state within one poll cycle (default 500 ms).
  4. Write from panel: Toggle DB100.DBX0.1 to TRUE from the panel. Watch table should show the value change within one poll cycle.
  5. Diagnostic counters: In the CPU's Online & diagnostics → Communication, verify the S7 connection state shows ESTABLISHED and no CONN_REFUSED events since startup.
  6. Load test: Add 50 tags and reduce poll interval to 200 ms. Watch the CPU's communication load — should remain under 30% to leave headroom for PROFINET.

10. Troubleshooting Matrix

Table 6 — Common Faults and Corrections
Symptom on Panel Likely Root Cause Corrective Action
Connection times out, panel shows "PLC No Response" PUT/GET disabled on CPU Re-check TIA Portal connection mechanisms, recompile, download, power-cycle CPU
Connection succeeds, all bits read 0 DB optimized; offsets do not match Disable "Optimized block access" on every touched DB; recompile and download
Reads work, writes silently dropped DB or MB area declared read-only in TIA Portal protection Set CPU protection level to "Full access (no protection)" or allow writes
Connection drops every 60–120 s CPU connection resource limit hit (8 S7 PUT/GET partners) Reduce number of active S7 partners or upgrade CPU to a 1500 family
Random bit toggles on panel Tag address collision — two tags mapped to same byte Audit tag list for duplicates; use unique byte offsets
Communication error "0x8104" in CPU diagnostic buffer Address error — panel requested invalid DB or offset outside DB length Compare panel DB/offset against actual DB size in TIA Portal
Panel hangs during project download Wrong driver selected (e.g. PPI instead of Ethernet) Switch driver to "Siemens S7-1200 (Ethernet)" or "S7-200/300/400 Ethernet"
Tags show value 32767 (INT) or 16#7FFF CPU faulted; not running user program Clear CPU fault, restart user program
Communication works in lab, fails on plant floor VLAN mismatch or industrial firewall blocking TCP/102 Verify switch port assignment, disable firewall rule for TCP/102 between panel and CPU

11. Performance and Limits

The S7-1200 dedicates a portion of its cycle time to communication. The following limits are firm:

  • 8 active S7 PUT/GET connections maximum, regardless of project configuration.
  • 240-byte maximum user-data payload per PUT request; 240 bytes per GET response.
  • Communication load: keep below 50% of cycle time to avoid cycle-time overrun faults.
  • For installations exceeding 500 tags polled at <500 ms intervals, move to a 1500 CPU or split the panel population across two CPUs.

If the panel-side poll timer is shorter than the CPU's actual update time, the panel will queue requests and visually lag. Increase the poll interval in SKWorkshop until the lag disappears, then back off by 20% for stability.

12. Diagnostic Tools and References

Official Siemens documentation paths to confirm the steps above:

Which S7-1200 firmware versions support PUT/GET for third-party panels?

All S7-1200 CPUs with firmware V4.0 or later support PUT/GET, but the "Permit access with PUT/GET communication from remote partner" option must be enabled in TIA Portal under Device Configuration → Properties → Protection & Security → Connection mechanisms. CPUs with V4.0 firmware may need a power-cycle after the setting is downloaded before the change takes effect.

Why do my DB tags read zero even though the values are non-zero in the CPU?

The data block is almost certainly compiled with "Optimized block access" enabled. Clear that attribute in the DB's Properties → Attributes, recompile the software, and download the DB. With optimized access enabled, the runtime byte offsets differ from the source layout, so the panel reads the wrong memory.

Can the Samkoon panel use symbolic tag names from the TIA Portal project?

No. Samkoon panels do not consume the TIA Portal symbol table. The panel must be configured with absolute addresses in the form DB<n>.DBW<offset>, M<byte>.<bit>, IW/QW, or I/Q. Symbolic I/O is reserved for Siemens WinCC Unified or TIA-integrated HMIs.

How many S7 connections can one S7-1200 accept simultaneously?

The firmware limits each S7-1200 to 8 concurrent S7 PUT/GET connections, including engineering, HMI, and any third-party clients. If the eighth slot is taken, the next connection attempt is refused by the CPU; this is logged in the diagnostic buffer as a communication resource error.

What is the default TCP port and should I change it?

S7 communication always uses TCP port 102 (ISO-on-TCP, RFC 1006). The port cannot be changed on the S7-1200 side. If a corporate firewall blocks port 102, route the HMI traffic through a dedicated VLAN or use a NAT-capable industrial router, but do not change the port on either device.

Why do values written from the HMI disappear after a CPU restart?

The bit-memory byte or DB word being written is not declared retentive. In TIA Portal, set the appropriate byte/word range under PLC → Properties → Retentive Memory to retain values across power cycles. Be conservative — declaring the entire MB area retentive adds unnecessary startup time and wear.

Which Samkoon driver string should I select in SKWorkshop?

Select the driver labeled "Siemens S7-1200 (Ethernet)" in SKWorkshop V4.5+. If your build only offers the legacy "S7-200/300/400 Ethernet" driver, it is wire-compatible with the S7-1200 because PUT/GET on TCP/102 has not changed. Avoid PPI, MPI, or "S7 PPI" drivers — those are for serial interfaces only.

Back to blog