...
Kotva | ||||
---|---|---|---|---|
|
...
This protocol supports a data reading/writing from the control PLC machines Siemens SIMATIC:
- types S7-300 and S7-400 equipped by an ethernet interface for the communication S7 ISO over TCP communication .
- types S7-1200, S7-1500
- types Siemens LOGO
- Siemens Microbox
Note: communication via Profinet/Profibus adapter ACCON-NetLink-PRO compact produced by company DELTALOGIC has been verified. Communication with multiple S-300 series PLCs on Profibus worked after the firmware upgrade of the adapter to version V2.54 (31. march 2015) with the adapter's BIOS version V2.39 (7. june June 2011). When the adapter's firmware was version V2.37 (8. august August 2011), communication could not be correctly established.
Note: communication with PLC Siemens LOGO was tested. A part of memory that is accessible for readreading/write writing is the V area that which is seen as DB1.
Note: the protocol has a "big-endian" data representation.
Kotva | ||||
---|---|---|---|---|
|
...
- Communication line category: TCP/IP-TCP, TCP Redundant.
- IP address (addresses) is set according to a network configuration of a specific device Siemens SIMATIC device.
- Port The port number is 102 (according to specification RFC 1006).
- Line The line number is not used, set on to 1.
When the a TCP Redundant communication line is set as TCP Redundant configured, you can configure an IP address and port of a backup device. If a communication process lost loses the connection or is unable to connect to the device, it will switch periodic periodically between the configured devices. The KOM process tries to connect to a primary device at first.
Note: Multiple IP addresses of primary/backup device devices can also be configured (separated by commas or semicolons).
Note: if all of the stations are in StOFF mode (or in simulation), the TCP connection will be closed. Thus it is possible to control TCP communication from the event using an STSTAT tell command.
Kotva | ||||
---|---|---|---|---|
|
...
A dialog window of of communication line configuration - Protocol parameters tab.
They influence some optional protocol parameters.
...
Parameter | Meaning | Unit / size | Default value | ||||||
---|---|---|---|---|---|---|---|---|---|
| Siemens Simatic rack number. | 0 to 7 | 0 | ||||||
Kotva | |||||||||
slot | slot | Siemens Simatic slot number. | 0 to 31 | 0 | |||||
Kotva | |||||||||
conres | conres | Connection resource, it inputs as MSB byte to calculation of the value of Remote TSAP at initialization of ISO Connection-request. See description of parameter Use long TSAP. | 0x0 to 0xFF | 3 | |||||
Kotva | |||||||||
ltsap | ltsap | ISO Local TSAP (Transport Service Local Point). Source TSAP value at initialization of ISO Connection-request. See description of parameter Use long TSAP. | 0x0 to 0xFFFF | 0x1000 | |||||
Kotva | |||||||||
srcref | srcref | ISO Source Reference. Value of SRC-REF at connection of ISO Connection-request. | 0 to 65535 | 1 | |||||
Kotva | |||||||||
ult | ult | Enables a long format of local and remote TSAP which is sent during connection setup phase. Short TSAP is 2 bytes long. Short local TSAP has following format:
Full remote TSAP is 28 bytes long and it contains:
| - | False | |||||
Kotva | |||||||||
mpiaddr | mpiaddr | MPI/Profibus address sent as a part of Remote TSAP, if parameter Use long TSAP is set to True | 0 to 126 | 1 | |||||
Kotva | |||||||||
s7sub1 | s7sub1 | S7 subnet address sent as a part of Remote TSAP, if parameter Use long TSAP is set to True | 0x0 to 0xFFFF | 0 | |||||
Kotva | |||||||||
s7sub2 | s7sub2 | S7 subnet adresa sent as a part of Remote TSAP, if parameter Use long TSAP is set to True | 0x0 to 0xFFFF | 0 | |||||
Kotva | |||||||||
tpdus | tpdus | Maximum required size of ISO TPDU. The parameter value at initialization of ISO Connection-request. | 8192, 4096, 2048, 1024, 512, 256 or 128 bytes | 1024 bytes | |||||
Kotva | |||||||||
pnj | pnj | Maximum parallel communication threads. Increase value if there is a request on more data read from device in shorter time. | 1 to 4 | 1 | |||||
Kotva | |||||||||
ct | ct | Required time of one data reading cycle. | ms | 1000 ms | |||||
Kotva | |||||||||
wt | wt | Maximal wait time on reply from other device. | ms | 2500 ms | |||||
Kotva | |||||||||
imd | imd | Delay which is used before sending a data request. When high data transfer rate is required, set 0 ms. | sec.ms | 20 ms | |||||
Kotva | |||||||||
rd | rd | Delay before reconnection to other device if the connection has failed or some communication error has occurred. | sec.ms | 2 sec | |||||
Kotva | |||||||||
cet | cet | When Timeout passes and communication error occurs in all threads, a communication error status is set on the stations. FALSE state is set on the communication line. | sec.ms | 20 sec | |||||
Kotva | |||||||||
pdu | pdu | Maximum PDU in bytes at S7 communication with other device. | 240, 480, 960 bytes | 480 bytes | |||||
Kotva | |||||||||
tnd | tnd | Setting Tcp No Delay parameter causes low level socket option TCP_NODELAY being set, thus turning off default packet coalesce feature. | - | False | |||||
Kotva | |||||||||
nvd | nvd | Activates a debug info about the loaded values of I/O tags. Use this parameter only when communication must be debug because it highly uses CPU and slows down the communication. | YES/NO | NO | |||||
Kotva | |||||||||
iopd | iopd | Activates a debug info about a binary content of packets. Use this parameter only when communication must be debug because it highly uses CPU and slows down the communication. | YES/NO | NO | |||||
Kotva | |||||||||
rdd | rdd | Activates a basic debug info about requested data. | YES/NO | YES | |||||
Kotva | |||||||||
rad | rad | Activates a basic debug info about received packets. | YES/NO | YES |
...
Rack 0 is most often used. Note: when using the ACCON-NetLink-PRO compact adapter, the Rack/Slot parameters must be set so that the MPI address of the S7 with which the D2000 KOM process communicates is equal to 32 * Rack + Slot. It is therefore necessary to create a separate line with specific Rack/Slot values for each S7. It is also necessary to set "RFC Routing over CPs with TSAP" to ON in the adapter web interface. | 0 to 7 | 0 | |||||||
| Siemens Simatic slot number. Slot 2 is most often used. | 0 to 31 | 0 | ||||||
| S7 subnet address sent as a part of Remote TSAP if parameter Use long TSAP is set to True | 0x0 to 0xFFFF | 0 | ||||||
| S7 subnet address sent as a part of Remote TSAP if parameter Use long TSAP is set to True | 0x0 to 0xFFFF | 0 | ||||||
| The parameter allows the use of redundant PLCs, which may differ in the settings of some parameters (Rack, Slot, S7 Subnet ID). If its value is True, the primary and secondary parameters are used alternately when connecting to the PLC using the specified IP addresses. | - | False | ||||||
| Connection resource, it enters as MSB byte to the calculation of the value of Remote TSAP at initialization of ISO Connection-request. /TSK1/Sending CR-TPDU: CLASS=0, SRC-REF=0x0001, TPDU size=1024, SRC-TSAP=10-00, DST-TSAP=03-02 After changing the Connection resource from 3 to 2, the communication started working. Note: according to Siemens documentation, the Connection Resource can be:
| 0x0 to 0xFF | 3 | ||||||
| ISO Local TSAP (Transport Service Local Point). Source TSAP value during the initialization of ISO Connection-request. See the description of parameter Use long TSAP. | 0x0 to 0xFFFF | 0x1000 | ||||||
| ISO Source Reference. Value of SRC-REF during the initialization of ISO Connection-request. | 0 to 65535 | 1 | ||||||
| Enables a long format of local and remote TSAP which is sent during the connection setup phase. Short TSAP is 2 bytes long. Short local TSAP has the following format:
Full remote TSAP is 28 bytes long and it contains:
| - | False | ||||||
| MPI/Profibus address sent as a part of Remote TSAP if parameter Use long TSAP is set to True | 0 to 126 | 1 | ||||||
| The maximum required size of ISO TPDU. The parameter value the initialization of ISO Connection-request. | 8192, 4096, 2048, 1024, 512, 256 or 128 bytes | 1024 bytes | ||||||
| Maximum parallel communication threads. Increase the value if there is a demand for more data read from the device in a shorter time. | 1 to 4 | 1 | ||||||
| The required time of one data reading cycle. | ms | 1000 ms | ||||||
| Maximal wait time on a reply from the device. | ms | 2500 ms | ||||||
| Delay before sending a data request. When a high data transfer rate is required, set 0 ms. | sec.ms | 20 ms | ||||||
| Delay before reconnection to the device if the connection has failed or some communication error has occurred. | sec.ms | 2 sec | ||||||
| When Timeout passes and communication error occurs in all threads, a communication error status is set on the stations. The FALSE state is set on the communication line. | sec.ms | 20 sec | ||||||
| Maximum PDU in bytes at S7 communication with the device. | 240, 480, 960 bytes | 480 bytes | ||||||
| Setting "Tcp No Delay" parameter causes the low-level socket option TCP_NODELAY to be set, thus turning off the default packet coalesce feature. | - | False | ||||||
| Activates debug info about the received values of I/O tags. Use this parameter only when communication must be debugged because it highly uses CPU and slows down the communication. | YES/NO | NO | ||||||
| Activates debug info about the binary content of packets. Use this parameter only when communication must be debugged because it highly uses CPU and slows down the communication. | YES/NO | NO | ||||||
| Activates basic debug info about requested data. | YES/NO | YES | ||||||
| Activates basic debug info about received packets. | YES/NO | YES |
Kotva | ||||
---|---|---|---|---|
|
...
- Communication protocol: Siemens SIMATIC S7 ISO over TCP.
- No station address, no protocol parameters on the station.
- The time parameter setting is ignored. See the line parameter Cycle Time.
- Time synchronization of the device is not supported.
Kotva | ||||
---|---|---|---|---|
|
...
Possible I/O tag types: Ai, Ao, Ci, Co, Di, Dout, TiA, ToA, TiR, ToR, TxtI.
I/O tag address is compatible with Siemens SimaticNET OPC server.
I/O tag address is a character string according to the following:
{;}{S7:[connectionname]}DB<no>,<type><address>
{;}{S7:[connectionname]}DI<no>,<type><address>
{;}{S7:[connectionname]}<object>{<type>}<address>
or for structured I/O tags with configured Destination column
{;}{S7:[connectionname]}DB<no>,<type><address>{, <items>}
{;}{S7:[connectionname]}DI<no>,<type><address>{, <items>}
{;}{S7:[connectionname]}<object>{<type>}<address>{, <items>}
Where:
; | Optional parameter. It disables the I/O tag from communication, stops the I/O tag address check when it is saved, and can be useful when the communication with the device is being developed or debugged. Note: Also an I/O tag with an address starting with %IGNORE will be ignored. | ||||||||||||||||||||||||||||||||||||||||
S7:[connectionname] | Optional parameter. It does not contain any useful information but it is supported only because of backward compatibility with the Siemens SimaticNET OPC server. | ||||||||||||||||||||||||||||||||||||||||
DB | Data block. S7 variable identifier from "Data block". | ||||||||||||||||||||||||||||||||||||||||
DI | Instance data block. S7 variable identifier from " Instance data block". | ||||||||||||||||||||||||||||||||||||||||
<no> | A "data block" number or "instance data block" number. | ||||||||||||||||||||||||||||||||||||||||
<object> | Specification of block or area in S7 PLC. Possible values:
| ||||||||||||||||||||||||||||||||||||||||
<type> | The data type of S7. It is not specified for T, C, and S objects.
Note: The CHARARR type is a D2000 extension that allows you to read/write an array of CHARs as a string. This type is not compatible with the Siemens SimaticNET OPC server addressing.
|
...
- Communication protocol: Siemens SIMATIC S7 ISO over TCP.
- No station address, no protocol parameters on station.
- Time parameter setting is ignored. See the line parameter Cycle Time.
- A time synchronization of device is not supported.
...
Possible I/O tag types: Ai, Ao, Ci, Co, Di, Dout, TiA, ToA, TiR, ToR, TxtI.
I/O tag address is compatible with Siemens SimaticNET OPC server.
I/O tag address is a character string according to following:
{;}{S7:[connectionname]}DB<no>,<type><address>
{;}{S7:[connectionname]}DI<no>,<type><address>
{;}{S7:[connectionname]}<object>{<type>}<address>
or for structured I/O tags with configured Destination column
{;}{S7:[connectionname]}DB<no>,<type><address>{, <items>}
{;}{S7:[connectionname]}DI<no>,<type><address>{, <items>}
{;}{S7:[connectionname]}<object>{<type>}<address>{, <items>}
Where:
Possible values:
STime of day (32 bits unsigned) in ms- .
; | Optional parameter. It disables the I/O tag from communication, stops I/O tag address check when it is saved, and can be useful when the communication with device is activated or debugged. | |||
S7:[connectionname] | Optional parameter. It does not contains any useful information but it is supported only because of backward compatibility with Siemens SimaticNET OPC server. | |||
DB | Data block. S7 variable identifier from "Data block". | |||
DI | Instance data block. S7 variable identifier from " Instance data block". | |||
<no> | Number of "data block" or "instance data block". | |||
<object> | ||||
I | Input | |||
Q | Output | |||
PI | Peripheral input | |||
PQ | Peripheral output | |||
M | Memory bit | |||
C | Counters (BCD coded integer numbers <0-999>) | |||
T | Timers (BCD coded time values from intervals <0.00-9.99>, <00.0-99.9>, <000-999>, <0000-9.9990>) | |||
Kotva | ||||
---|---|---|---|---|
szl | szl | SZL (System-ZustandsListen - system status lists) - lists with diagnostic information which are available on CPU family S7-300 and S7-400. Diagnostic information differs for various classes of PLC and details are described in manuals (e.g. System Software for S7-300/400 System and Standard Functions, Volume 1/2) Note: I/O tag S must be of TxtI type. | <type> | Data type of S7. It is not specified for T, C and S objects. |
Identifier <type> | Description | |||
X | Bit (boolean). Specify a bit number 0 to 7 - e.g. DB9,X8.3 | |||
B | Byte (8 bits unsigned). | |||
W | Word (16 bits unsigned). | |||
D | Double word (32 bits unsigned). | |||
CHAR | Character (8 bits signed). | |||
INT | Integer (16 bits signed). | |||
DINT | Double integer (32 bits signed). | |||
REAL | Floating point number (32 bits according to IEEE754 standard). | |||
LREAL | Long floating point number (64 bits according to IEEE754 standard). | |||
STRING | String. Specify maximal length of string. | |||
DT | Date and Time, 8 bytes in BCD format. | |||
TIME | Time (32 bits signed) in ms. | |||
TOD | ||||
<address> | Address of variable. Possible types:
| |||
<items> | The number of elements for structured I/O tags with configured Destination column. Every read element (1,2,3 .. items) will be written to one item of the destination column. Structured I/O tags are not supported for objects of type T (timers), C (counters), and S (system status lists) nor for data type STRING. Note: All "items" elements are read at once. If e.g. 100 elements of type D (double word) are configured, it means reading of a block of 400 bytes. If a smaller size of the packet (S7 PDU size) is agreed on during the establishment of connection, reading of this I/O tag will not be performed and the trace file of the line will contain an error message. Agreed S7 PDU size is minimum of size offered by D2000 (parameter S7 PDU Size) and supported size of a specific device. Note: the syntax of address when specifying the number of elements is compatible with Siemens S7 OPC server (e.g. S7:[MyPLC]DB120,INT1050, 24), which facilitates a simple transition from OPC communication to Siemens SIMATIC S7 ISO on TCP protokol protocol by configuring a new line, a new station and then changing the parent of I/O tags (e.g. via CSV or XML export and import). Example of addresses:
|
...
There have been reported cases when a communication with a device (specifically, Simatic S7-1200) was established, but after sending a read request the device didn't send required data but a packet with ResultCode = 0x8104, that is 33028 decimal.
According to http://stackoverflow.com/questions/23745407/libnodave-error-while-reading-from-siemens-s7-1200-0x8104, the problem is insufficient access rights. The cause is a new security option that was added to TIA Portal 12 and higher that , which by default disallows remote access to read/update blocks. Without this option disabled, only Siemens tools have access to the data.
Configuration: in TIA, under the properties for the CPU project, select "Protection"; there is an option for "Permit access with PUT/GET communications from the remote partner" and set also "Access level" according to the following screenshotfollowing screenshot.
Note: in practice, read/write access has been tested with Simatic S7-1500 even with "Access level" = "HMI access", with "Permit access with PUT/GET communications from remote partner" enabled.
In the case of TIA Portal version 14, the setting "Permit access with PUT/GET communications from the remote partner" is on a dedicated tab "Connection mechanisms" under "Protection & Security":
...
For the communication with these devices to work, beside besides the settings described in the note above, it is necessery necessary to disable "Optimized block access" in the TIA Portal tool. Following The following screenshot is taken in TIA Portal version 12:
After changing the security settings in TIA Portal, it is necessary to go to the menu Compile → "Software (Rebuild all)" and after compiling to uploat the project to PLC. Partial rebuild may not be sufficient" and after compiling to upload the project to PLC. A partial rebuild may not be sufficient.
As of STEP 7 V17, the following procedure is advised to get the communication working: use Online & diagnostics to perform a Reset to Factory Settings and mark the box labeled "Delete password for protection of confidential PLC configuration data".
Kotva | ||||
---|---|---|---|---|
|
...
- RFC 1006, "ISO Transport Service on top of the TCP, Version: 3", May 1987.
- International Standard ISO/IEC 8073:1997, "Information technology - Open Systems Interconnection - Protocol for providing the connection-mode transport service."
- International Standard ISO/IEC 8072:1996, "Information technology - Open Systems Interconnection - Transport service definition."Systems Interconnection - Transport service definition."
Info | ||
---|---|---|
| ||
You can read blogs about the Siemens SIMATIC S7 ISO on TCP communication protocol: |
Kotva | ||||
---|---|---|---|---|
|
...
- Ver. 1.0 - September 17, 2010 - Document written.
- Ver. 1.1 - July 2, 2020 - Support for CHARARR.
- Ver. 1.2 - July 9, 2020 - Support for BCD and LBCD.
- Ver. 1.3 - August 27, 2020- Support for Siemens Microbox
Info | ||
---|---|---|
| ||
...