Can the input parameter of user blocks for the send/recieve
interface be changed during the runtime of a job?
The following description applies to all CPs(communication
processor) for the automation system S7-300 and S7-400 which
support SEND/RECEIVE communication, a service for transferring user
data transparently on the level 4 of the OSI reference model.
The current Industrial Ethernet CPs are:
- 6GK7 443-1EX11-0XE0 (CP 443-1)
- 6GK7 443-1GX11-0XE0 (CP 443-1 IT)
- 6GK7 343-1EX20-0XE0 (CP 343-1)
This applies as well to PROFIBUS-CPs which support equivalent
Calling the user blocks
To send and receive the individual data blocks, a certain function
- FC5 (AG_SEND): Sending data blocks
- FC6 (AG_RECV): Receiving data blocks
Calling the blocks in the user program of a S7-CPU further on is
displayed in the programming language STL:
Figure 1: FC5 (AG_SEND)
Figure 2: FC6 (AG_RECV)
If a job has been started with the first call of the block, the red
marked input parameter of the blocks may not be changed until
- block FC5 answers with DONE = 1 or
- block FC6 answers with NDR = 1 or
- one of the blocks answers with ERROR = 1
If this instruction is not andhered to, error messages at the
user interface or misleading entries in the diagnose buffer may
Errors that may occur when ignoring the instruction
- In the S7-300 CPs, at the user interface, there appears the
error message 0x80B1 that informs that the indication of length (in
the parameter LEN) is wrong. This message will then persist.
- In the S7-400 CPs, sporadically an entry that informs that the
connection number x is out of the permitted range of values will
appear in the diagnose buffer.
Both of these behaviours can indicate that the instruction has
not been adhered to and therefore the input parameters of the user
blocks have been altered at runtime.
Note about "AG_LSEND" and "AG_LRECV":
The described facts apply also to the blocks FC50 (AG_LSEND) and
FC60 (AG_LRECV) that must be used in older S7 300 groups and for
all S7 400 groups for data lengths of more than 240 byte.