PLC Support Matrix
This page documents which Siemens PLC families are supported by python-snap7, the communication protocols they use, and any configuration requirements.
Supported PLCs
PLC Family |
Introduced |
S7 (classic) |
S7CommPlus V1 |
S7CommPlus V2/V3 |
python-snap7 support |
Notes |
|---|---|---|---|---|---|---|
S7-300 |
~1994 |
Yes |
No |
No |
Full |
Works out of the box with |
S7-400 |
~1996 |
Yes |
No |
No |
Full |
Works out of the box with |
S7-1200 (FW ≤3) |
2009 |
Yes |
No |
No |
Full |
Enable PUT/GET access in TIA Portal. |
S7-1200 (FW 4+) |
~2014 |
Yes |
Yes |
No |
Full |
|
S7-1500 (FW 1.x) |
2012 |
PUT/GET only |
Yes |
No |
Full |
|
S7-1500 (FW 2.x) |
~2016 |
PUT/GET only |
No |
V2 |
Full |
|
S7-1500 (FW 3.x+) |
~2022 |
PUT/GET only |
No |
V3 |
Full |
|
S7-1500R/H |
~2019 |
No |
No |
V2/V3 |
Not supported |
Redundant CPUs; no classic S7 fallback available. |
ET 200SP CPU |
~2014 |
PUT/GET only |
Yes |
Yes |
PUT/GET only |
Same behavior as S7-1500 with matching firmware. |
S7-200 SMART |
~2012 |
Subset |
No |
No |
Partial |
Basic read/write works. Some advanced functions may not be available. |
LOGO! 8 |
~2014 |
Subset |
No |
No |
Full |
Use the |
Enabling PUT/GET Access
For S7-1200 and S7-1500 PLCs, classic S7 protocol access requires the PUT/GET option to be enabled. See TIA Portal Configuration for step-by-step instructions.
When using s7.Client, the library automatically tries S7CommPlus first,
which does not require PUT/GET to be enabled. PUT/GET is only needed if
you force the legacy protocol or use snap7.Client directly.
Warning
PUT/GET access provides unauthenticated read/write access to PLC memory. Only enable this on networks that are properly segmented and secured.
Protocol Overview
Siemens has evolved their PLC communication protocols over time:
Protocol |
Encryption |
Authentication |
Used by |
|---|---|---|---|
S7 (classic) |
None |
None |
S7-300, S7-400, S7-1200, S7-1500 (PUT/GET mode) |
S7CommPlus V1 |
None |
Challenge-response |
S7-1200 FW 4+, S7-1500 FW 1.x |
S7CommPlus V2 |
TLS 1.3 |
Challenge-response + TLS |
S7-1500 FW 2.x |
S7CommPlus V3 |
TLS |
Certificate-based |
S7-1500 FW 3.x+ |
python-snap7 implements the classic S7 protocol and S7CommPlus V1, V2, and V3.
The s7 package is the recommended entry point – it automatically selects
the best protocol for your PLC. The classic protocol remains available on most
PLC families via the PUT/GET mechanism. S7CommPlus V4 is not yet supported;
for PLCs that require it, consider using OPC UA as an alternative.
Alternatives for Unsupported PLCs
If your PLC is not supported by python-snap7, consider these alternatives:
OPC UA: S7-1500 PLCs (FW 2.0+) include a built-in OPC UA server. Use a Python OPC UA client such as opcua-asyncio.
TIA Portal: Siemens’ official engineering tool supports all protocols and PLC families.
PROFINET: For real-time communication needs, PROFINET may be more appropriate than S7 communication.