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.
| 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 | — |
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.
| 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.
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
- Open the S7-1200 project in TIA Portal.
- Select the CPU device in the project tree and double-click Device configuration.
- In the device view, click on the CPU module (not the PROFINET port).
- Open the Properties pane → Protection & Security.
- Scroll to the Connection mechanisms section.
- Tick Permit access with PUT/GET communication from remote partner.
- Compile the hardware (right-click CPU → Compile → Hardware and software only) and download to the CPU.
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.
- Right-click the data block (e.g.
DB100) in the project tree. - Choose Properties.
- Open Attributes.
- Clear the checkbox Optimized block access.
- Confirm with OK.
- Recompile the software and download only the affected DB.
Once optimized access is off, the panel can address data using the standard S7 syntax:
| 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.
- Open SKWorkshop, create or open the project.
- Open System Settings → Device and select the correct Samkoon panel model.
- Open System Settings → Communication → New Link (or PLC Link in older builds).
- 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.
- Set the 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:
| 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
MW0only 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:
- 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.
- 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.
9. Verification Procedure
After configuration, walk through these checks before declaring the link commissioned.
- Connection indicator: Samkoon system screen should show "Connected" or "Online" with no red fault icon.
- 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.
-
Tag round-trip test: Force
DB100.DBX0.0to TRUE in the CPU using a watch table. The bound Samkoon button should show the "pressed" state within one poll cycle (default 500 ms). -
Write from panel: Toggle
DB100.DBX0.1to TRUE from the panel. Watch table should show the value change within one poll cycle. -
Diagnostic counters: In the CPU's Online & diagnostics → Communication, verify the S7 connection state shows
ESTABLISHEDand noCONN_REFUSEDevents since startup. - 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
| 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:
- S7-1200 Programmable Controller — System Manual — primary hardware and protection-level reference.
- Communication with S7-1200 / S7-1500 — function-block and protocol reference for PUT/GET.
- TIA Portal Help: Protection & Security — description of the connection-mechanisms toggle.
- S7-1200 CPU 1215C DC/DC/DC Operating Instructions — sample hardware manual with rack/slot information.
- Communication functions of the S7-1200 — port assignments and connection limits.
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.