Libraries Comm Controller DOC V2 1 0 en
Libraries Comm Controller DOC V2 1 0 en
Industry
Online
Support
APPLICATION EXAMPLE
Libraries for
Communication for
SIMATIC Controllers
SIMATIC Controllers, TIA Portal
Legal information
Use of application examples
Application examples illustrate the solution of automation tasks through an interaction of several components in the form of text,
graphics and/or software modules. The application examples are a free service by Siemens AG and/or a subsidiary of Siemens AG
(“Siemens”). They are non-binding and make no claim to completeness or functionality regarding configuration and equipment. The
application examples merely offer help with typical tasks; they do not constitute customer-specific solutions. You yourself are responsible
for the proper and safe operation of the products in accordance with applicable regulations and must also check the function of the
respective application example and customize it for your system.
Siemens grants you the non-exclusive, non-sublicensable and non-transferable right to have the application examples used by technically
trained personnel. Any change to the application examples is your responsibility. Sharing the application examples with third parties or
copying the application examples or excerpts thereof is permitted only in combination with your own products. The application examples
are not required to undergo the customary tests and quality inspections of a chargeable product; they may have functional and
performance defects as well as errors. It is your responsibility to use them in such a manner that any malfunctions that may occur do not
result in property damage or injury to persons.
Disclaimer of liability
Siemens shall not assume any liability, for any legal reason whatsoever, including, without limitation, liability for the usability,
availability, completeness and freedom from defects of the application examples as well as for related information, configuration and
performance data and any damage caused thereby. This shall not apply in cases of mandatory liability, for example under the German
Product Liability Act, or in cases of intent, gross negligence, or culpable loss of life, bodily injury or damage to health, non-compliance
with a guarantee, fraudulent non-disclosure of a defect, or culpable breach of material contractual obligations. Claims for damages
arising from a breach of material contractual obligations shall however be limited to the foreseeable damage typical of the type of
agreement, unless liability arises from intent or gross negligence or is based on loss of life, bodily injury or damage to health. The
foregoing provisions do not imply any change in the burden of proof to your detriment. You shall indemnify Siemens against existing or
future claims of third parties in this connection except where Siemens is mandatorily liable.
By using the application examples you acknowledge that Siemens cannot be held liable for any damage beyond the liability provisions
described.
Other information
Siemens reserves the right to make changes to the application examples at any time without notice. In case of discrepancies between the
suggestions in the application examples and other Siemens publications such as catalogs, the content of the other documentation shall
have precedence.
The Siemens terms of use (https://support.industry.siemens.com) shall also apply.
Security information
Siemens provides products and solutions with industrial security functions that support the secure operation of plants, systems,
machines and networks.
In order to protect plants, systems, machines and networks against cyber threats, it is necessary to implement – and continuously
maintain – a holistic, state-of-the-art industrial security concept. Siemens’ products and solutions constitute one element of such a
concept.
Customers are responsible for preventing unauthorized access to their plants, systems, machines and networks. Such systems, machines
and components should only be connected to an enterprise network or the internet if and to the extent such a connection is necessary
and only when appropriate security measures (e.g. firewalls and/or network segmentation) are in place.
For additional information on industrial security measures that may be implemented, please visit
https://www.siemens.com/industrialsecurity.
Siemens’ products and solutions undergo continuous development to make them more secure. Siemens strongly recommends that
product updates are applied as soon as they are available and that the latest product versions are used. Use of product versions that are
no longer supported, and failure to apply the latest updates may increase customer’s exposure to cyber threats.
To stay informed about product updates, subscribe to the Siemens Industrial Security RSS Feed under https://www.siemens.com/cert.
Table of Contents
1. Introduction ......................................................................................................................................7
2. LCom .................................................................................................................................................9
3. LFTP ................................................................................................................................................29
4. LHTTP ..............................................................................................................................................35
5. LMQTT.............................................................................................................................................48
6. LOpcUa ...........................................................................................................................................56
7. LSNMP ............................................................................................................................................77
8. LSNTP ..............................................................................................................................................88
9. LSyslog ...........................................................................................................................................92
1. Introduction
Overview
The Libraries for Communication are a collection of blocks for various communication tasks, functions, and protocols for
SIMATIC Controllers.
TCP
OPC UA
SNMP SNTP
MQTT
UDP
HTTP(S)
ISO-on-TCP
syslog
FTP
Figure 1-1
Range of Functions
The following libraries are included:
• LCom:
This library enables communication based on TCP and provides additional communication functionalities using its own
protocol (see chapter 2).
• LFTP:
With this library, a controller can act as an FTP client (see chapter 3).
• LHTTP:
This library enables data exchange with a web server in the local network or on the internet via HTTP or HTTPS (see
chapter 4).
• LMQTT:
This library enables the communication of a controller as MQTT Client (see chapter 5).
• LOpcUa:
This library provides function blocks for OPC UA PubSub communication (see chapter 6).
• LSNMP:
This library can be used to monitor and control SNMP-enabled network components from a controller or to send
messages to a network management system (see chapter 7).
• LSNTP:
With this library, a controller can act as an SNTP server to synchronize the time throughout different areas of the
system (see chapter 8).
• LSyslog:
This library allows sending syslog messages to a syslog sever over UDP or TCP with optional TLS encryption (see
chapter 9).
In addition, the library provides master copies that you can use to easily implement your own communication functions:
• Master copies for communication via TCP, UDP, and ISO-on-TCP (see chapter 10.1)
• Master copies for OPC UA methods
• Master copies for common OPC UA structured data types
• Constants for OPC UA status codes
Application
These libraries are available for TIA Portal V16 and TIA Portal V17.
All included libraries are valid for SIMATIC S7-1500 and S7-1200 controllers. If the respective library is also valid for other
controllers, this is described in the section for the corresponding library.
2. LCom
2.1. Overview
2.1.1. Range of Functions
Possible applications for the use of the LCom library
The "LCom_Communication" function block of the LCom library is used to establish a point-to-point full duplex connection
via Industrial Ethernet, based on the TCP standard.
The function block can be used for standard TCP communication to other devices (e.g. camera, controller).
Since the range of functions of the TCP transport protocol is not sufficient for many applications in the automation sector,
a separate protocol (LCom protocol) has been defined and implemented in the LCom block library. The LCom protocol
enables additional communication functionalities.
Camera
CPU
Application
S7-1500 CPU
LCom_Communication
IDB
IDB
Ethernet
Interface
Switch
Some scenarios for a possible use of the LCom library are shown below:
Scenario 1
The "LCom_Communication" function block is used for standard TCP communication. The TCP transport protocol ensures
that a continuous flow of data is transferred. TCP is not packet-oriented and, therefore, does not permit the transmission
of data records with a defined overall length.
Camera
CPU
Application
LCom_Communication
IDB
IDB
Ethernet
Interface
Switch
Scenario 2
When using the LCom protocol, data records of a defined total length can be sent and received consistently by the
partner. In order to quickly detect a connection failure, cyclic vital signs are sent. The cycle time of the periodic vital signs
is specified by the user.
To synchronize the time of two controllers, the current time of one controller can be sent to the partner and transferred
there as the system time.
To use the additional communication functionalities, the communication partner (e.g. S7-1500 CPU) must support the
LCom protocol.
CPU
Application
S7-1500 CPU
LCom_Communication
IDB
IDB
Ethernet
Interface
Switch
Function blocks
Table 2-1: Function blocks of the library
Master copies
An example how a configuration and execution of a communication with user defined data in connection with the
"LCom_Communication" FB looks like is provided in the master copies templates.
In addition, constants are provided for gloabal usage. With help of that for example, the status and error codes of
"LCom_Communication" FB can be processed more readable in user application program.
LCom_Constants PLC tags LCom constants (i.e. status and error codes) for global usage in user
application program
2.1.3. Validity
This library is valid for:
• SIMATIC S7-1500 Controllers as of firmware V2.0
• SIMATIC S7-1200 Controllers as of firmware V4.4
• CP 1543-1, CP 1542SP-1, CP 1542SP-1 IRC, CP 1543SP-1 as of firmware V1.0
• CP 1243-1, CP 1243-8 as of firmware V2.0
2.2. LCom_Communication
Parameters
Figure 2-4: LCom_Communication
LCom_Communication
sendData
UDInt dataReceived Bool
Length
receivedData
UDInt readDataLength UDInt
Length
error Bool
status Word
sendBuffer
Variant Variant
receiveBuffer
Variant Variant
diagnostics
"LCom_typeDiagnostics" "LCom_typeDiagnostics"
enable Input Bool • TRUE: Starts the FB with a rising edge. The connection to the
partner is established automatically.
• FALSE (default): With a falling edge, the connection is
broken.
send Input Bool • TRUE: Sends the data connected to the "sendBuffer" input
parameter.
• FALSE (default): Data that is connected at the "sendBuffer"
input parameter is not sent.
sending Output Bool • TRUE: Sends the data connected to the "sendBuffer" input
parameter. Do not change send data.
• FALSE: Data that is connected at the "sendBuffer" input
parameter is not sent.
dataReceived Output Bool • TRUE: New data was received. The value is present for one
cycle.
• FALSE: No data is available for the user.
error Output Bool • TRUE: An error has occurred. More detailed information is
provided by the output parameter "status" or the diagnostic
buffer.
• FALSE: No error has occurred.
connection Struct
sender Struct
ackTimeout Time T#1s Only relevant when using the LCom protocol
("configuration.connection.comService" = 2):
The tag "ackTimeout" determines the monitoring time
after which an acknowledgement of the sent packet is
expected at the latest. If this period is exceeded, the
connection is closed and re-established.
T#1ms..T#24d20h30m20s630ms
usePartnerTimestamps Bool FALSE • TRUE: The received time is taken over as system time
• FALSE: Received time telegrams are ignored
LCom_typeDiagnostics
The following table shows the structure of the PLC data type "LCom_typeDiagnostics".
localConfig Struct
connection Struct
sender Struct
ackTimeout Time The tag ackTimeout determines the local monitoring time
after which an acknowledgement of the sent packet is expected
at the latest. If this time is exceeded, the connection is closed and
re-established.
timeSync Struct
usePartnerTimestamps Bool • TRUE: The received time is adopted as the system time.
• FALSE: Received time telegrams are ignored.
partnerConfig Struct
connnection Struct
sender Struct
ackTimeout Time The tag ackTimeout determines the partner monitoring time after
which an acknowledgement of the sent packet is expected at the
latest. If this time is exceeded, the connection is closed by the
partner and re-established.
timeSync Struct
usePartnerTimestamps Bool • TRUE: The received time is taken over as system time
• FALSE: Received time telegrams are ignored
avgReceiveMsgCycle Real Mean value in which cycle data was received [ms]
LComProtocolUsed Bool • TRUE: The LCom protocol is used. With the LCom protocol
additional communication functionalities are enabled
• FALSE: The TCP transport protocol is used
avgMsgSendingTime Real Average value of how long a sending process (sending = TRUE)
takes [ms]
avgMsgReceivingTime Real Mean value of how long a receiving process takes [ms]
numberOfSentMessages UDInt Number of messages sent, since the L/H edge at the enable input
numberOfReceivedMessages UDInt Number of received messages, since the L/H edge at the enable
input
totalReconnects UInt Number of times the FB has reestablished the TCP connection
lastConnect DTL Time when the connection was successfully established to the
partner
The following figure shows the two scenarios as a signal flow diagram.
5) 6)
enable 1
(IN) 0
1)
1
busy
(OUT) 0
2) 3) 4)
error 1
(OUT) 0
The state when entering the buffer is always active. When resetting the error, the status in the buffer is set to inactive.
The structure contains the return value of the system function as well as four additional values that can contain detailed
information depending on the error that occurred.
Code Meaning
Diagnostic entry:
16#7001 First call after receipt of a new job (rising edge at enable).
Diagnostic entry:
Diagnostic entry:
Diagnostic entry:
16#7004 FB is configured as TCP server and waits for a TCP client request.
Diagnostic entry:
Diagnostic entry:
Code Meaning
16#7006 The FB has successfully exchanged configuration data with the partner via LCom protocol V1.
The maximum possible data length is 64 KByte.
Diagnostic entry:
16#7007 The FB has successfully established the connection and exchanged the configuration data (LCom protocol V2)
with the partner.
The maximum possible data length is 16 MByte.
Diagnostic entry:
Diagnostic entry:
Diagnostic entry:
16#7600 The specified send length (sendDataLength) is too large and is automatically limited by the FB.
The maximum possible send length is determined by the size of the own send buffer (sendBuffer).
Diagnostic entry:
16#7610 The specified time (configuration.connection.lifeSignCycleTime) for connection monitoring is too large and is
automatically limited to 65535 ms.
Diagnostic entry:
Code Meaning
16#7611 The specified time for the send cycle (configuration.sender.cycleTime) is too large and is automatically limited
to 65535 ms.
Diagnostic entry:
16#7612 The configured monitoring time (configuration.sender.ackTimeout) is too large and is automatically limited to
65535 ms
Diagnostic entry:
16#7613 The configured send cycle (configuration.sender.CycleTime) cannot be kept because the previous sending
process has not yet been completed.
Diagnostic entry:
Diagnostic entry:
Diagnostic entry:
Code Meaning
Diagnostic entry:
Diagnostic entry:
16#8201 The specified connection reference (configuration.connection.connectionID) is invalid → see system function
TCON.
Diagnostic entry:
16#8202 The specified hardware identifier for the local interface (configuration.connection.interfaceID) is invalid → see
system function TCON.
Diagnostic entry:
Diagnostic entry:
16#8204 The specified partner IP address (configuration.connection.partnerIP) is invalid → see system function TCON.
Diagnostic entry:
Code Meaning
Diagnostics entry:
Dianostics entry:
Diagnostic entry:
16#8208 The value passed to the input tag sendBuffer is not of type ARRAY of BYTE and is invalid.
Diagnostic entry:
16#8209 The value passed to the output tag receiveBuffer is not of type ARRAY of BYTE and is invalid.
Diagnostic entry:
Diagnostic entry:
Code Meaning
Diagnostic entry:
Diagnostic entry:
Diagnostic entry:
16#8600 An error has occurred when using the TCON system function, see subFunctionErrorID in the diagnostic buffer
and system documentation. The connection is reestablished.
Diagnostic entry:
16#8601 An error has occurred when using the TCON system function, see subFunctionErrorID in the diagnostic buffer
and system documentation. The connection is reestablished.
Diagnostic entry:
Code Meaning
16#8602 An error occurred while using the system function TSEND, see subFunctionErrorID in the diagnostic buffer and
system documentation. The connection is reestablished.
Diagnostic entry:
16#8603 An error has occurred when using the TRCV system function, see subFunctionErrorID in the diagnostic buffer
and system documentation. The connection is reestablished.
Diagnostic entry:
16#8604 An error has occurred when using the TDISCON system function, see subFunctionErrorID in the diagnostic
buffer and system documentation. The connection is reestablished.
Diagnostic entry:
16#8610 The vital signs of the partner were not received in time. The connection is reestablished.
Diagnostic entry:
16#8611 The monitoring time of a sent data packet has expired without an acknowledgement being received from the
partner. The connection is reestablished.
Diagnostic entry:
Code Meaning
16#8612 An invalid acknowledge number was received from the partner, the connection will be re-established.
Diagnostic entry:
16#8613 The LCom (protocol) versions of the library LCom do not match the partner or an invalid (protocol) version was
received. The connection is reestablished.
Diagnostic entry:
16#8614 A telegram was received which has an ID that was not expected. The connection is reestablished.
Diagnostic entry:
If errors occur during parameterization (16#8200 to 16#83FF), intervention by the user is required. The user must replace
the faulty value with a permissible value and restart the function block with a rising edge at the "enable" input.
In case of an internal error (16#8600 to 16#87FF) the function block will automatically close the connection and try to re-
establish it. A new rising edge at the "enable" input is not necessary.
3. LFTP
3.1. Overview
3.1.1. Range of Functions
A simple protocol that works according to the client/server principle and which meets the demands of this task is the File
Transfer Protocol (FTP).
FTP allows you to store data on server systems. FTP supports almost all server systems and operating systems.
The controllers from the SIMATIC S7-300, S7-400 and S7-1500 product families support FTP communication with the help
of specialized communications processors (CPs).
With this library you can implement FTP communication with an S7-1200, S7-1500 or ET200SP CPU based on Open User
Communication without a special CP.
Figure 3-1
FTP
PROFINET IE
+
ET 200SP
S7-1500 S7-1200
S7-300 with S7-400 with S7-1500 with CPU
CP 343-1 CP 443-1 CP 1543-1
LFTP_typeFtpParam V1.0.0 This data type describes all parameters of the FTP
commands.
3.1.3. Validity
The library is valid for:
• SIMATIC S7-1500 controllers with firmware V2.9 or higher
• SIMATIC S7-1200 controllers with firmware V4.5 or higher
• SIMATIC ET 200SP Open Controllers with firmware V2.9 or higher
• CM 1542-1
3.2. LFTP_Client
3.2.1. Interface Description
Description
The FTP function block "LFTP_Client" implements FTP on the basis of Open User Communication. It can execute the
following FTP commands:
• CONNECT (connect and log on)
• DISCONNECT (disconnect and log off)
• STORE (save data)
• APPEND (append data)
• RETRIEVE (retrieve data)
• DELETE (delete a file)
Parameters
Figure 3-2: LFTP_Client
LFTP_Client
error Bool
status Word
diagnostics "typeDiagnostics"
connParam
"LFTP_typeConnParam" "LFTP_typeConnParam"
ftpParam
"LFTP_typeFtpParam" "LFTP_typeFtpParam"
dataLen
UDInt UDInt
data
Array[*] of Byte Array[*] of Byte
valid OUT Bool TRUE: The FB executes its function without error.
done OUT Bool TRUE: The current job (send message or activate shell) was completed
successfully.
status OUT Word Status and error codes (see chapter 3.2.2)
connParam IN_OUT "LFTP_typeConnParam" Sets connection parameters. The hardware ID, URL of the FTP server,
username and password are defined here.
Status Meaning
16#8400 Error received from FTP server. Some possible causes could be that the login credentials are wrong or that the
file name does not exist.
The FTP-specific error code is output at "diagnostics.subfunctionStatus". The meaning of the FTP-specific error
code can be found in the FTP specification.
Status Meaning
NOTE If the FB outputs "done" but no data after a "RETRIEVE" command, this may be caused by the
communication load being set too low. Increase the communication load in the device configuration.
LFTP_typeFtpParam
This data type describes all FTP parameters necessary for the data connection.
portActiveMode UInt Local port for the FTP active mode, must be set to a value higher than 2000.
4. LHTTP
4.1. Overview
4.1.1. Range of Functions
The Hypertext Transfer Protocol (HTTP) is a data transfer protocol used primarily to load Web pages from the World Wide
Web.
Due to the increasing networking of plants and the advancement of the Internet of Things (IoT), HTTP and HTTPS also play
an increasingly important role in automation technology.
The library for HTTP communication (LHTTP) enables the data exchange of a
SIMATIC S7-1200/1500 CPU via the integrated Ethernet interface with another device in the local network or a web server
in the internet via HTTP respectively HTTPS.
The LHTTP library provides function blocks with which the most conventional HTTP request methods can be implemented
in the user program:
• GET
• POST
• PUT
Due to the integrated certificate management in the TIA Portal, it is also possible to transfer data securely with HTTPS
using the same blocks.
LHTTP_ExtractString FC V1.0.0 Extracts a string between two specified text parts from an
FromArray array of chars.
4.1.3. Validity
The library is valid for:
• SIMATIC S7-1500 Controllers as of firmware V2.0
• SIMATIC S7-1200 Controllers as of firmware V4.4
• SIMATIC ET 200SP Open Controllers as of firmware V2.5
• SIMATIC S7-1500 Software Controllers as of firmware V2.5
• CP 1543-1 as of firmware V2.0
• CP 1543SP-1 as of firmware V1.0
• CP 1243-1, CP 1243-8 as of firmware V3.2
4.2. LHTTP_Get
4.2.1. Interface Description
Description
The block implements the HTTP method GET to fetch data from a web server.
Parameter
Figure 4-2: LHTTP_Get
LHTTP_Get
keep
Bool length UDInt
Connection
Time timeOut
responseData
Array[*] of Char Array[*] of Char
execute Input Bool With a positive edge, a connection to the web server is established and the
HTTP request is sent.
hwID Input HW_ANY Hardware identifier of the PN/IE interface for establishing the connection
If "0" is selected, a suitable one is selected automatically.
queryParams Input String Additional query parameters if parameter "url" is not long enough, i.e.
"lang=en&q=simatic".
tls Input "LHTTP_typeTLS" TLS certificates for secure data transmission (HTTPS)
For unsafe data transmission (HTTP) leave unconnected.
keepConnectionInput Bool TRUE: Keeps the connection established after the job has been executed
timeOut Input Time Time after which a job should be automatically canceled
status Output Word Status and error codes (see chapter 4.8)
responseCode Output UInt Received HTTP status code (see Table 4-10)
responseData InOut Array[*] of Char Received user data. The array must start at "0".
4.2.2. Operation
The user specifies the requested resource in the form of a URL, e.g. "https://httpbin.org/get" or
"http://192.168.0.1:80/index.html", at the "url" parameter. HTTPS is used per default. To use HTTP "http://" must be
explicitly specified in the URL.
Optional parameters can be passed with two variants:
• Appended to the URL at the parameter "url" with a "?" in front, e.g. "http://httpbin.org/get?lang=en&q=simatic"
• At the separate parameter "queryParams", e.g. "lang=en&q=simatic"; "?" or "&" is inserted automatically in between
"url" and "queryParameters".
With a rising edge at the "execute" parameter, the block requests the IP address belonging to the host at the configured
DNS Server if necessary and establishes a connection to the web server.
If HTTPS is used, the certificate of the requested web server must be referenced at the "tls" parameter (see chapter 4.7). If
the web server requires client authentication, the PLC's certificate must also be referenced.
The block creates the HTTP request from the specified URL and sends it to the web server.
The user data of the web server's response is output at the "responseData" parameter. The received HTTP status code is
output at the "responseCode" parameter.
If the web server responds with an error (HTTP status code 4xx), no data is output.
NOTE The FB does not clear the receive area at "responseData" between two requests. The receive area
might contain old data. Use the length of the received user data of the current request at the output
"length" to only evaluate this data.
Depending on the parameter "keepConnection", the block terminates the connection to the web server after all telegrams
have been successfully received or keeps it established for further requests.
NOTE The block outputs the HTTP status code received from the server with the first received telegram and
writes the user data of each received telegram directly into the memory area connected to the
parameter "responseData". Evaluate the user data only after the output "done" has been set.
NOTE The block does not support redirections. If the server responds with a redirection (HTTP status code
3xx), the block issues an error (see chapter 4.8).
Check the URL and correct it if necessary.
NOTE If 256 characters are not enough, the array can be increased by adjusting the local constant
"UPPER_USER_FIELDS".
4.3. LHTTP_PostPut
4.3.1. Interface Description
Description
The block implements the HTTP methods POST and PUT to transfer data to a web server.
Parameter
Figure 4-3: LHTTP_PostPut
LHTTP_PostPut
"LHTTP_typeTLS" tls
keep
Bool
Connection
Time timeOut
responseData
Array[*] of Char Array[*] of Char
execute Input Bool With a positive edge, a connection to the web server is established and the
HTTP request is sent.
hwID Input HW_ANY Hardware identifier of the PN/IE interface for establishing the connection
If "0" is selected, a suitable one is selected automatically.
tls Input "LHTTP_typeTLS" TLS certificates for secure data transmission (HTTPS)
For unsafe data transmission (HTTP) leave unconnected.
keepConnectionInput Bool TRUE: Keeps the connection established after the job has been executed
timeOut Input Time Time after which a job should be automatically canceled
status Output Word Status and error codes (see chapter 4.8)
responseCode Output UInt Received HTTP status code (see chapter 4.8)
responseData InOut Array[*] of Char Received user data. The array must start at "0".
4.3.2. Operation
The user specifies the requested resource in the form of a URL, e.g. "https://httpbin.org/post" or
"http://192.168.0.1:80/index.html", at the "url" parameter. HTTPS is used per default. To use HTTP "http://" must be
explicitly specified in the URL.
The user data can be passed as a string or, if 254 characters are not sufficient, as an array of chars at the "data" parameter.
If Array of Char is used, the user data must be terminated with the character "$00".
The content type of the body depends on the webserver and can be set with the parameter "contentType". The content
type defines the format of the body.
Via the "method" parameter the user chooses whether the HTTP method POST or PUT should be used.
With a rising edge at the "execute" parameter, the block requests the IP address belonging to the host at the configured
DNS Server if necessary and establishes a connection to the web server.
If HTTPS is used, the certificate of the requested web server must be referenced at the "tls" parameter (see chapter 4.7). If
the web server requires client authentication, the PLC's certificate must also be referenced.
The block creates the HTTP request from the specified URL and sends it to the server.
The user data of the server's response is output at the "responseData" parameter. The received HTTP status code is output
at the "responseCode" parameter.
If the web server responds with an error (HTTP status code 4xx), no data is output.
NOTE The FB does not clear the receive area at "responseData" between two request. The receive area might
contain old data. Use the length of the received user data of the current request at the output "length"
to only evaluate this data.
Depending on the parameter "keepConnection", the block terminates the connection to the server after all telegrams have
been successfully received or keeps it established for further requests.
NOTE The block outputs the HTTP status code received from the server with the first received telegram and
writes the user data of each received telegram directly into the memory area connected to the
parameter "responseData". Evaluate the user data only after the output "done" has been set.
NOTE The block does not support redirections. If the server responds with a redirection (HTTP status code
3xx), the block issues an error (see chapter 4.8).
Check the URL and correct it if necessary.
NOTE If 256 characters are not enough, the array can be increased by adjusting the local constant
"UPPER_USER_FIELDS".
4.4. LHTTP_FindStringInArray
Description
The function "LHTTP_FindStringInArray" searches an Array of Char for a string and returns its position as return value.
Parameter
Figure 4-4: LHTTP_FindStringInArray
LHTTP_FindStringInArray
String searchFor
searchIn
Array[*] of Char Array[*] of Char
Ret_Val Return DInt Position (index) of the searched string in the array.
-1: String was not found.
4.5. LHTTP_ExtractStringFromArray
Description
The LHTTP_ExtractStringFromArray function extracts a string between two specified text parts from an array of chars.
Parameter
Figure 4-5: LHTTP_ExtractStringFromArray
LHTTP_ExtractStringFromArray
extracted
String textBefore String
String
String textAfter
searchIn
Array[*] of Char Array[*] of Char
textBefore Input String Text part before the text that is to be extracted
textAfter Input String Text part after the text that is to be extracted
4.6. LHTTP_ExtractStringFromArrayExt
Description
The function "LHTTP_ExtractStringFromArrayExt" extracts a string between two specified text parts from an array of char
with extended options.
NOTE The function is part of the library to allow easy parsing of the received data, but is not used by the
library blocks themselves.
Parameter
Figure 4-6: LHTTP_ExtractStringFromArrayExt
LHTTP_ExtractStringFromArrayExt
extracted
String textBefore String
String
includeBeforeAf
Bool length Int
ter
DInt startPos
searchIn
Array[*] of Char Array[*] of Char
textBefore Input String Text part before the text that is to be extracted
textAfter Input String Text part after the text that is to be extracted
includeBeforeAfter Input Bool If TRUE, the text parts before and after are extracted as well
startPos Input DInt Position in the array from which the search is to be started
position Output DInt position (index) of the extracted text within the array
validateServerIdentity Bool A set bit means that the client validates the subjectAlternateName in the server's
X.509 V3 certificate to verify the server's identity. The certificates are checked
when the connection is established.
serverCert UDInt ID of the X.509 V3 certificate (usually a CA certificate) used by the TLS client to
validate the TLS server authentication.
If this parameter is "0", the TLS client uses all (CA) certificates currently loaded in
the client's Certificate Store to validate the server authentication.
NOTE You will find an application example for the usage of certificates in TIA Portal in the Siemens Industry
Online Support:
https://support.industry.siemens.com/cs/ww/en/view/109769068
Code Description
16#8201 The array at the parameter "responseData" does not begin with "0".
Code Description
16#8203 The host name in the URL is different from the host to which the current connection exists. Reset
"keepConnection" and run the job again.
16#8204 Data type at parameter "data" is neither String nor Array of Char
16#8205 End of data could not be detected. The data must be terminated with the "$00" character.
16#8206 The end of the user-defined header fields at parameter "userFields" could not be detected. Terminate the
header fields with the "$00" character.
16#8210 The internal send buffer is too small for the request to be transmitted. Adjust the size of the send buffer at
the local constant "UPPER_REQUEST_ARRAY".
16#8220 The size of the array at the parameter "responseData" is not sufficient to store the received user data. The
array was completely filled and the length of the received user data is output at the parameter "length".
16#8403 The web server responded with a redirection. Redirections are not supported by the LHTTP library.
16#8404 The web server responded with an error message. The received HTTP status code is output at the
"responseCode" output.
16#8408 Request timeout. Check the Ethernet connection of the PLC and the URL.
16#84C4 The connection to the web server was interrupted. Check the network connection.
16#8612 Error in subordinate command "MOVE_BLK_VARIANT" when inserting user-defined header fields.
The error code of the command is output to "diagnostics.subfunctionStatus". For the meaning of the
respective error code, refer to the TIA Portal information system.
16#8620 Encoding of the received message could not be detected or is not supported.
3xx - Redirection
301 Moved Permanently The requested resource is now available at the address specified in the "Location"
header field. The old address is no longer valid.
304 Not Modified The content of the requested resource has not changed since the last request from
the client and is therefore not transferred.
403 Forbidden The request was not executed due to lack of client authorization.
404 Not Found The requested resource is not available in the required form.
502 Bad Gateway The server could not fulfill its functionality as a gateway or proxy because it
received an invalid response.
504 Gateway Timeout The server could not perform its function as a gateway or proxy because it did not
receive a response from the servers or services it was using within a specified
period of time.
5. LMQTT
5.1. Overview
5.1.1. Range of Functions
The library "LMQTT" provides you with a function block to implement the MQTT protocol in SIMATIC S7-1200/1500
controllers. The FB allows you to submit MQTT messages to a broker (publisher role) and to create subscriptions
(subscriber role). The communication can be secured via a TLS connection.
Blocks
5.1.3. Validity
The library is valid for:
• SIMATIC S7-1500 Controllers as of firmware V2.0
• SIMATIC S7-1200 Controllers as of firmware V4.4
• SIMATIC ET 200SP Open Controllers as of firmware V2.5
• SIMATIC S7-1500 Software Controllers as of firmware V2.5
• CP 1543-1 as of firmware V2.0
• CP 1543SP-1 as of firmware V1.0
• CP 1243-1, CP 1243-8 as of firmware V3.2
5.2. LMQTT_Client
5.2.1. Interface Description
Description
The function block "LMQTT_Client" integrates the MQTT Client function and allows you to submit MQTT messages to a
broker (Publisher role) and to create subscriptions (Subscriber role). The communication can be secured via a TLS
connection.
Parameter
LMQTT_Client
receivedMsg
UDInt publishMsgLen USInt
Status
receivedMsg
UInt willMsgLen UDInt
DataLen
Time timeOut
connParam
"LMQTT_typeConnParam" "LMQTT_typeConnParam"
clientIdentifier
WString WString
username
WString WString
password
WString WString
willTopic
WString WString
willMsgPayload
Array[*] of Byte Array[*] of Byte
mqttTopic
WString WString
publishMsgPayload
Array[*] of Byte Array[*] of Byte
receivedTopic
WString WString
receivedMsgPayload
Array[*] of Byte Array[*] of Byte
retain Input Bool • TRUE: The data is sent with the "retain" flag.
• FALSE: The data is sent without the "retain" flag.
willMsgLen Input UInt Current length of valid data in the array parameter
"willMsgPayload"
valid Output Bool TRUE: The FB executes its function without error
status Output Word Status and error codes (see chapter 5.2.2)
receivedMsgStatus Output USInt Indicates for one cycle at a time when a new message
has been received (subscription):
• 0: No new message received
• 1: New valid message received
• 2: New message received, but the message is invalid
or received data is larger than the memory area of the
receive topic or the receive message
willtopic InOut WString Optional: Topic to which the "Last Will" message is sent
willMsgPayload InOut Array [*] of bytes Optional: Message sent as "Last Will".
publishMsgPayload InOut Array [*] of bytes Message that is transmitted as user data during
publishing
receivedMsgPayload InOut Array [*] of bytes User data received in the message of the subscribed
topic.
NOTE While a job is being processed, the block does not accept any other jobs – this includes the period keep
alive function. Wait until the existing job is completed by evaluating the status 16#7004 and then
generate an edge at the respective input.
TRUE TRUE TRUE FALSE FB executes its function without error and current job
(publish/subscribe/unsubscribe) has been completed successfully
FALSE FALSE TRUE TRUE An error has occurred that the FB is trying to fix automatically (for
example, when the connection is lost) or the current job has failed,
but FB can continue to function.
FALSE FALSE FALSE TRUE An error occurred that the FB is unable to fix automatically, and the FB
has aborted the execution of its function (for example, in the case of
invalid connection parameters).
After you have fixed the error, a new edge at the "enable" input is
necessary.
Table 5-4
Code Description
16#8200 Client identifier is empty – client identifier must be at least 1 character long
16#8670 Timeout during MQTT connection setup with the MQTT broker
Code Description
16#8740 MQTT packet was acknowledged by the broker with invalid packet ID
Table 5-5
Receive messages
Messages can only be received if the block is successfully connected and at least one topic has been subscribed.
The following table explains the values of the "receivedMsgStatus" parameter depending on "done" and "busy" if there is
no error.
receivedMsgStatus Description
Table 5-6
5.3. LMQTT_ConvertToUtf8
This FC converts a WChar into a UTF-8 compliant format, which is necessary for correct transmission in MQTT Topics.
LMQTT_ConvertToUtf8
bytesUsed USInt
error Bool
status Word
hwId HW_ANY Hardware identifier of the PN/IE interface for establishing the
connection
0: A suitable one is selected automatically.
validateServerIdentity Bool • TRUE: The client validates the subject alternate name (SAN) in the
certificate of the MQTT broker when the connection is established.
• FALSE: No validation of the SAN
Table 5-8
NOTE You will find an application example for the usage of certificates in TIA Portal in the Siemens Industry
Online Support:
https://support.industry.siemens.com/cs/ww/en/view/109769068
6. LOpcUa
6.1. Overview
6.1.1. Range of Functions
Part 14 of the OPC UA specification introduced the "PubSub" communication mechanism. This mechanism is not based on
the Client–Server principle as in conventional OPC UA communication (OPC 10000-4), but uses a "publish/subscribe"
principle.
PubSub OPC UA applications, with their roles as "Publisher" (sender) and/or "Subscriber" (receiver), are decoupled from
each other, which deviates from the Client–Server principle. The number of Subscribers is not important for the Publisher.
Publishers and Subscribers also do not need to connect directly to each other, allowing not only uni- but also multi- or
broadcasts. Additionally the communication is separated from the data storage.
Figure 6-1
PC
PLC
Broker
PLC
PLC
PLC PLC
The "LOpcUa" library provides function blocks that can be used to implement OPC UA PubSub on SIMATIC controllers:
• LOpcUa_PubUdp: Publisher via UDP (UADP encoding)
• LOpcUa_SubUdp: Subscriber via UDP (UADP decoding)
• LOpcUa_PubMqtt: Publisher via MQTT (UADP encoding
• LOpcUa_SubMqtt: Subscriber via MQTT (UADP decoding)
• LOpcUa_PubMqttJson: Publisher via MQTT (JSON-Encoding)
• LOpcUa_SubMqttJson: Subscriber via MQTT (JSON-Decoding)
Blocks
Table 6-1: Blocks of the library
LOpcUa_PubUdp FB V1.3.2 Implements the OPC UA PubSub Publisher via UDP and enables
process data to be transmitted to a Subscriber.
LOpcUa_SubUdp FB V1.3.2 Implements the OPC UA PubSub Subscriber via UDP and enables
process data to be received from a Publisher.
LOpcUa_PubMqttUadp FB V2.0.0 Implements the OPC UA PubSub Publisher via MQTT and enables
process data to be transmitted to a Subscriber. Uses "UADP" for
encoding.
LOpcUa_SubMqttUadp FB V2.0.0 Implements the OPC UA PubSub Subscriber via MQTT and enables
process data to be received from a Publisher. Uses "UADP" for
decoding.
LOpcUa_PubMqttJson FB V2.0.0 Implements the OPC UA PubSub Publisher via MQTT and enables
process data to be transmitted to a Subscriber. Uses "JSON" for
encoding.
LOpcUa_SubMqttJson FB V2.0.0 Implements the OPC UA PubSub Subscriber via MQTT and enables
process data to be received from a Publisher. Uses "JSON" for
decoding.
LOpcUa_Pub_Boolean FC V1.0.1 Encoding for "LOpcUa_PubX": Boolean to send buffer (byte array).
LOpcUa_Pub_Byte FC V1.0.1 Encoding for "LOpcUa_PubX": Byte to send buffer (byte array).
LOpcUa_Pub_Double FC V1.0.1 Encoding for "LOpcUa_PubX": Double to send buffer (byte array).
LOpcUa_Pub_Float FC V1.0.1 Encoding for "LOpcUa_PubX": Float to send buffer (byte array).
LOpcUa_Pub_Guid FC V1.0.1 Encoding for "LOpcUa_PubX": GUID to send buffer (byte array).
LOpcUa_Pub_Int16 FC V1.0.1 Encoding for "LOpcUa_PubX": Int16 to send buffer (byte array).
LOpcUa_Pub_Int32 FC V1.0.1 Encoding for "LOpcUa_PubX": Int32 to send buffer (byte array).
LOpcUa_Pub_Int64 FC V1.0.1 Encoding for "LOpcUa_PubX": Int64 to send buffer (byte array).
LOpcUa_Pub_SByte FC V1.0.1 Encoding for "LOpcUa_PubX": SByte to send buffer (byte array).
LOpcUa_Pub_String FC V1.1.1 Encoding for "LOpcUa_PubX": String to send buffer (byte array).
LOpcUa_Pub_UInt16 FC V1.0.1 Encoding for "LOpcUa_PubX": UInt16 to send buffer (byte array).
LOpcUa_Pub_UInt32 FC V1.0.1 Encoding for "LOpcUa_PubX": UInt32 to send buffer (byte array).
LOpcUa_Pub_UInt64 FC V1.0.1 Encoding for "LOpcUa_PubX": UInt64 to send buffer (byte array).
LOpcUa_typeVariant V1.0.1 Implements the "Variant" data type and maps a "DataSetField".
6.1.3. Validity
• SIMATIC S7-1500 Controllers as of firmware V2.0
• SIMATIC ET 200SP Open Controllers as of firmware V2.5
• SIMATIC S7-1500 Software Controllers as of firmware V2.5
• CP 1543-1, CP 1542SP-1, CP 1542SP-1 IRC, CP 1543SP-1 as of firmware V1.0
• CP 1243-1, CP 1243-8 as of firmware V2.0
Figure 6-2
OPC UA PubSub
via UDP
LOpcUa_
PubUDP
Publisher Subscriber
OPC UA PubSub
via UDP
LOpcUa_
SubUDP
Subscriber Publisher
PROFINET / IE
To generate the data storage in a data block, for the process data to be sent or received, the library provides prepared
user-defined data types ("UDT"). The Publisher and Subscriber blocks access this data to implement the respective
function.
Schematic representation
The following figure shows the most important relationships between the components involved in sending data from a
Publisher to a Subscriber:
Figure 6-3
PublishedDataSet
1 1
LOpcUa_
PubUDP
1..n
DataSetMessage DataSetField
1..n
LOpcUa_ 1 1
SubUDP SubscribedDataSet
1
1..n
DataSetReader
SubUDP_ 1
Data
1..n
ReaderGroup
PubSub via UDP
Subscriber – Data storage in DB
To map one or more "WriterGroups" or "ReaderGroups", both the Publisher and the Subscriber function blocks require a
data block in which the PubSub data (metadata and process data) are provided according to the schema shown above.
To implement the individual components in data blocks, the library provides you with suitable PLC data types that map
the required structures. If a component is required more than once ("1..n"), it must be created as an array in the data
block.
The block "LOpcUa_PubUdp" accesses the "WriteGroups" and serializes the "DataSetMessage" from the data contained
therein and sends ("Publish") this with the help of the system function block "TUSEND" to the Subscribers.
The block "LOpcUa_SubUdp" receives the "DataSetMessage" via the system function block "TURCV" and de-serializes the
data to the data structure of the created "ReaderGroup".
6.2.2. LOpcUa_PubUdp
Description
The block "LOpcUa_PubUdp" sends ("Publish") the PubSub data via UDP to the Subscribers. The block requires a data block
in which the components "WriterGroup", "DataSetWriter", "PublishedDataSet", and "PublishedWriterGroup" are predefined.
In an internal sequencer of the block, the data packets are coded and sent via UDP with the help of the system function
blocks "TCON", "TUSEND", and "TDISCON".
NOTE To ensure a consistent send clock, we recommend to call the block in a cyclic interrupt OB. The
"PublishingInterval" is defined in the "WriterGroups".
Parameter
Figure 6-4: LOpcUa_PubUdp
LOpcUa_PubUdp
numWriter
DInt busy Bool
Groups
diagnostics "typeDiagnostics"
writerGroup
Array[*] of "LOpcUa_typeWriterGroup" Array[*] of "LOpcUa_typeWriterGroup"
valid Output Bool TRUE, if publishing is active at the block and no error
occurs.
error Output Bool TRUE: An error has occurred. More detailed information is
provided by the output parameter "status" or the
diagnostic buffer.
FALSE: No error occurred.
writerGroup InOut Array[*] of "LOpcUa_type Data structure for mapping one or more "WriterGroups".
WriterGroup" Contains metadata for PubSub communication.
publishedDataSet InOut Array[*] of "LOpcUa_type Data structure for mapping one or more
PublishedDataSet" "PublishedDataSets". This structure contains one process
tag each, which is published.
6.2.3. LOpcUa_SubUdp
Description
The block "LOpcUa_SubUdp" receives ("Subscribe") the PubSub data via UDP from a Publisher. The block requires a data
block in which the "ReaderGroup" component is predefined.
In an internal sequencer of the block, the data packets are received and decoded via the system function blocks "TCON",
"TURCV", and "TDISCON" using UDP.
To receive the data with minimum delay we recommend to call the block in a cyclic OB.
Parameter
Figure 6-5: LOpcUa_SubUdp
LOpcUa_SubUdp
numDataSet
DInt busy Bool
Reader
conn
TCON_IP_v4 error Bool
Param
status Word
diagnostics "typeDiagnostics"
readerGroup
"LOpcUa_typeReaderGroup" "LOpcUa_typeReaderGroup"
valid Output Bool TRUE if subscribing is active on the block and no error
occurs.
error Output Bool TRUE: An error has occurred. More detailed information is
provided by the output parameter "status" or the
diagnostic buffer.
FALSE: No error occurred.
readerGroup InOut "LOpcUa_type Data structure for mapping a "ReaderGroup". Contains the
ReaderGroup" structures of the "DataSetReader".
Code Description
16#8600 Configuration error: Check whether enough "WriterGroups", related to the block input "numWriterGroups",
have been created. In addition, check whether the fields of the structures are assigned correctly.
16#8601 Connection error for TCON: For more information, refer to the "diagnostics" block output.
16#8602 Receive error for TURCV: For more information, refer to the "diagnostics" block output.
16#8603 Send error for TUSEND: For more information, refer to the "diagnostics" block output.
16#8604 Error while encoding the data: Check the metadata on the "writerGroup" parameter.
16#8605 Error decoding the data: Received data type is not supported. Extend the function block or use a different
data type with the Publisher.
Figure 6-6
SIMATIC S7-1500
OPC UA Subscriber
(e.g., S7-1500 or Sensor)
OPC UA PubSub via MQTT
MQTT Broker
LOpcUa_
PubMqtt
(Json)
Publisher Subscriber
S7-1500 OPC UA Publisher
(e.g., S7-1500 or Sensor)
OPC UA PubSub via MQTT
MQTT Broker
LOpcUa_
SubMqtt
(Json)
Subscriber Publisher
PROFINET / IE
To generate the data storage in a data block, for the process data to be sent or received, the library provides prepared
user-defined data types ("UDT"). The Publisher and Subscriber blocks access this data store in order to implement the
respective function. Depending on the chose block the encoding is done via UADP or JSON.
Schematic representation
The following figure shows the most important relationships between the components involved in sending data from a
Publisher to a Subscriber:
Figure 6-7
DataPubMqtt
DataSetWriter
1..n
1
PublishedDataSet
1 1
LOpcUa_
PubMqtt
(Json)
1..n
MQTT
DataSetMessage DataSetField
Broker
1..n
LOpcUa_
SubMqtt 1 1
(Json) SubscribedDataSet
1
1..n
DataSetReader
DataSubMqtt 1
1
ReaderGroup
PubSub via UDP
Subscriber – Data storage in DB
To map one or more "WriterGroups" or "ReaderGroups", both the Publisher and the Subscriber function blocks require a
data block in which the PubSub data (metadata and process data) are provided according to the schema shown above.
To implement the individual components in data blocks, the library provides you with suitable PLC data types that map
the required structures. If a component is required more than once ("1..n"), it must be created as an array in the data
block.
The block "LOpcUa_PubUdp" accesses the "WriteGroups" and serializes the "DataSetMessage" from the data contained
therein and sends ("Publish") this with the help of the system function block "TUSEND" to the Subscribers.
The block "LOpcUa_SubUdp" receives the "DataSetMessage" via the system function block "TURCV" and de-serializes the
data to the data structure of the created "ReaderGroup".
6.3.2. LOpcUa_PubMqtt
Description
The block "LOpcUa_PubMqtt" sends ("Publish") the PubSub data via MQTT to an MQTT Broker. The block requires a data
block in which the components "WriterGroup", "DataSetWriter", "PublishedDataSet", and "PublishedWriterGroup" are
predefined.
In an internal step chain of the block, the data packets are coded and sent via MQTT using the library block
"LMQTT_Client" is used to send them via MQTT.
NOTE To ensure a consistent send clock, we recommend to call the block in a cyclic interrupt OB. The
"PublishingInterval" is defined in the "WriterGroups".
Parameter
Figure 6-8: LOpcUa_PubMqtt
LOpcUa_PubMqtt
numWriter
DInt busy Bool
Groups
status Word
diagnostics "typeDiagnostics"
connParam
"LOpcUa_typeConnParamMqtt" "LOpcUa_typeConnParamMqtt"
writerGroup
Array[*] of "LOpcUa_typeWriterGroup" Array[*] of "LOpcUa_typeWriterGroup"
valid Output Bool TRUE, if publishing is active at the block and no error
occurs.
error Output Bool TRUE: An error has occurred. More detailed information is
provided by the output parameter "status" or the
diagnostic buffer.
FALSE: No error occurred.
writerGroup InOut Array[*] of "LOpcUa_type Data structure for mapping one or more "WriterGroups".
WriterGroup" Contains metadata for PubSub communication.
publishedDataSet InOut Array[*] of "LOpcUa_type Data structure for mapping one or more
PublishedDataSet" "PublishedDataSets". This structure contains one process
tag each, which is published.
6.3.3. LOpcUa_SubMqtt
Description
The block "LOpcUa_SubMqtt" receives ("Subscribe") the PubSub data via MQTT from an MQTT Broker. The block requires a
data block in which the "ReaderGroup" component is predefined.
In an internal step chain of the block, the data packets are received and decoded via MQTT using the library block
"LMQTT_Client" library module to receive and decode the data packets via MQTT.
To receive the data with minimum delay we recommend to call the block in a cyclic OB.
Parameter
Figure 6-9: LOpcUa_SubMqtt
LOpcUa_SubMqtt
numDataSet
DInt busy Bool
Reader
error Bool
status Word
diagnostics "typeDiagnostics"
connParam
"LOpcUa_typeConnParamMqtt" "LOpcUa_typeConnParamMqtt"
readerGroup
"LOpcUa_typeReaderGroup" "LOpcUa_typeReaderGroup"
valid Output Bool TRUE if subscribing is active on the block and no error
occurs.
error Output Bool TRUE: An error has occurred. More detailed information is
provided by the output parameter "status" or the
diagnostic buffer.
FALSE: No error occurred.
readerGroup InOut "LOpcUa_type Data structure for mapping a "ReaderGroup". Contains the
ReaderGroup" structures of the "DataSetReader".
6.3.4. LOpcUa_PubMqttJson
Description
The block "LOpcUa_PubMqttJson" sends ("Publish") the PubSub data via MQTT to an MQTT Broker. The block requires a
data block in which the components "WriterGroup", "DataSetWriter", "PublishedDataSet", and "PublishedWriterGroup" are
predefined.
In an internal step chain of the block, the data packets are coded and sent via MQTT using the library block
"LMQTT_Client" is used to send them via MQTT.
NOTE To ensure a consistent send clock, we recommend to call the block in a cyclic interrupt OB. The
"PublishingInterval" is defined in the "WriterGroups".
Parameter
Figure 6-10: LOpcUa_PubMqttJson
LOpcUa_PubMqttJson
numWriter
DInt busy Bool
Groups
status Word
diagnostics "typeDiagnostics"
connParam
"LOpcUa_typeConnParamMqtt" "LOpcUa_typeConnParamMqtt"
valid Output Bool TRUE, if publishing is active at the block and no error
occurs.
error Output Bool TRUE: An error has occurred. More detailed information
is provided by the output parameter "status" or the
diagnostic buffer.
FALSE: No error occurred.
6.3.5. LOpcUa_SubMqttJson
Description
The block "LOpcUa_SubMqttJson" receives ("Subscribe") the PubSub data via MQTT from an MQTT Broker. The block
requires a data block in which the "ReaderGroup" component is predefined.
In an internal step chain of the block, the data packets are received and decoded via MQTT using the library block
"LMQTT_Client" library module to receive and decode the data packets via MQTT.
To receive the data with minimum delay we recommend to call the block in a cyclic OB.
Parameter
Figure 6-11: LOpcUa_SubMqttJson
LOpcUa_SubMqttJson
busy Bool
error Bool
status Word
diagnostics "typeDiagnostics"
connParam
"LOpcUa_typeConnParamMqtt" "LOpcUa_typeConnParamMqtt"
readerGroup
"LOpcUa_typeReaderGroupJson" "LOpcUa_typeReaderGroupJson"
valid Output Bool TRUE if subscribing is active on the block and no error
occurs.
error Output Bool TRUE: An error has occurred. More detailed information
is provided by the output parameter "status" or the
diagnostic buffer.
FALSE: No error occurred.
Code Description
16#8600 Configuration error: Check whether enough "WriterGroups", related to the block input "numWriterGroups",
have been created. In addition, check whether the fields of the structures are assigned correctly.
16#8601 Connection error for "LMQTT_Client": For more information, refer to the "diagnostics" block output or check
the "Status" parameter in the "instLMQTT_Client" multi-instance.
16#8602 Receive error for "LMQTT_Client": For more information, refer to the "diagnostics" block output or check the
"Status" parameter in the "instLMQTT_Client" multi-instance.
16#8603 Send error for "LMQTT_Client": For more information, refer to the "diagnostics" block output or check the
"Status" parameter in the "instLMQTT_Client" multi-instance.
16#8604 Error while encoding the data: Check the metadata on the "writerGroup" parameter.
16#8605 Error decoding the data: Received data type is not supported. Extend the function block or use a different
data type with the Publisher.
LOpcUa_typePublisherID
The PLC data type "LOpcUa_typePublisherID" is used to identify the Publisher.
type UDInt Selects the data type to be used for the Publisher ID to be sent:
• "3": id8
• "5": id16
• "7": id32
• "9": id64
• "12": idString
id8 USInt The tag selected with "type" contains the Publisher ID that identifies your
Publisher. You can choose the ID freely.
id16 UInt Example: "type" = "7" corresponds to "id32 (UDInt)"
id32 UDInt
id64 ULInt
idString WString
LOpcUa_typeWriterGroup
The PLC data type "LOpcUa_typeWriterGroup" implements the WriterGroups.
name String The name of the "WriterGroup" (optional, will not be transferred).
priority USInt The priority for sorting (higher value = higher priority).
publishingInterval USInt The publishing interval for the configuration of the send clock. The
transmission rate is given by the following formula:
Send clock = OB cycle time * PublishingInterval
LOpcUa_typeDataSetWriter
The PLC data type "LOpcUa_typeDataSetWriter" implements the DataSetWriter.
name String The name of the "DataSetWriter" (optional, will not be transferred).
dataSet UInt Reference to the index of the "PublishedDataSet". Each "DataSet" refers to
a different index of the "PublishedDataSets".
LOpcUa_typePublishedDataSet
The PLC data type "LOpcUa_typePublishedDataSet" implements the PublishedDataSets.
name String The name of the "PublishedDataSet" (optional, will not be transmitted).
dataSetField Array [0..X] of "LOpcUa_ Implements the "DataSetFields" which contain the individual process tags
typeVariant" to be sent.
LOpcUa_typeVariant
The PLC data type "LOpcUa_typeVariant" implements the data type "Variant" for PubSub communication.
encodingMask USInt Specifies the data type of the process value to be sent or received.
value Dependent on Used field according to the "encodingMask". Take the assignment
"encodingMask" between "encodingMask" and "Value" from the comments in the data
type "LOpcUa_typeVariant". The corresponding field contains the process
value that you can describe in your user program for sending.
Example: "encodingMask" = "1" corresponds to "boolean"
LOpcUa_typeReaderGroup
The PLC data type "LOpcUa_typeReaderGroup" implements the ReaderGroup.
LOpcUa_typeDataSetReader
The PLC data type "LOpcUa_ typeDataSetReader" implements the DataSetReader.
LOpcUa_typeSubscribedDataSet
The PLC data type "LOpcUa_typeSubscribedDataSet" implements the SubscribedDataSets.
name String The name of the SubscribedDataSet" (optional, will not be transmitted).
dataSetField Array [0..X] of "LOpcUa_ Implements the "DataSetFields" which contain the individual process tags
typeVariant" to be sent.
LOpcUa_typeWriterGroupJson
The PLC data type "LOpcUa_typeWriterGroupJson" implements the WriterGroups.
name String The name of the "WriterGroup" (optional, will not be transferred).
priority USInt The priority for sorting (higher value = higher priority).
publishingInterval USInt The publishing interval for the configuration of the send clock. The
transmission rate is given by the following formula:
Send clock = OB cycle time * PublishingInterval
LOpcUa_typeDataSetWriterJson
The PLC data type "LOpcUa_typeDataSetWriterJson" implements the DataSetWriter.
dataSet UInt Reference to the index of the "PublishedDataSet". Each "DataSet" refers to
a different index of the "PublishedDataSets".
LOpcUa_typePublishedDataSetJson
The PLC data type "LOpcUa_typePublishedDataSetJson" implements the PublishedDataSets.
dataSetField Array [0..X] of "LOpcUa_ Implements the "DataSetFields" which contain the individual process tags
typeVariant" to be sent.
LOpcUa_typeReaderGroupJson
The PLC data type "LOpcUa_typeReaderGroupJson" implements the ReaderGroup.
LOpcUa_typeDataSetReaderJson
The PLC data type "LOpcUa_ typeDataSetReaderJson" implements the DataSetReader.
LOpcUa_typeSubscribedDataSetJson
The PLC data type "LOpcUa_typeSubscribedDataSetJson" implements the SubscribedDataSets.
name WString The name of the SubscribedDataSet" (optional, will not be transmitted).
dataSetField Array [0..X] of "LOpcUa_ Implements the "DataSetFields" which contain the individual process tags
typeVariant" to be sent.
LOpcUa_typeConnParamMqtt
The PLC data type "LOpcUa_typeConnParamMqtt" defines the connection parameters for the MQTT connection.
mqttClientIdentifier WString MQTT Client identifier used when establishing the connection.
7. LSNMP
7.1. Overview
7.1.1. Range of Functions
The status of SNMP-capable network components can be monitored and, if necessary, controlled via SNMP (Simple
Network Management Protocol) by network management systems, such as SINEC NMS.
The blocks of the "LSNMP" library also allow a SIMATIC Controller with a PROFINET interface, acting as a simple SNMP
manager, to query information from the network components and, if necessary, to control them as well, or to send SNMP
traps to an SNMP manager as an SNMP agent.
NOTE The blocks of this library support sending and receiving SNMP messages that do not exceed 486 bytes
in total length.
Diagram
The following figure shows a possible constellation in which you can use the SNMP blocks of the "LSNMP" library.
Figure 7-1
Network Management
System
e.g.
SINEC NMS
SNMP-Traps
S7-1200/1500
SCALANCE W
SCALANCE X
TIM 1531
S7-300/400 IRC
SCALANCE M
Blocks
Table 7-1: Blocks of the library
LSNMP_GetBulk FB V5.0.4 Requesting large amounts of data from an SNMP agent with
only a single response telegram (SNMPv2c)
LSNMP_CalcCnt FC V1.0.0 Used to calculate the number of bytes a BER encoded length
takes in the packet (not relevant for the user)
LSNMP_DecodeLen FC V1.0.0 Decodes a BER encoded length (not relevant for the user)
LSNMP_EncodeLen FC V1.0.0 Encodes a length according to BER and inserts it into the
packet (not relevant for the user)
LSNMP_typeConnParam V1.0.1 Describes the connection parameters for all LSNMP blocks
LSNMP_typePacket V1.0.1 Structures parameters that are necessary for building the
SNMP package within the blocks (not relevant for the user)
7.1.3. Validity
The library is valid for:
7.2. LSNMP_Get
Description
SNMP provides different data packets to request tags of an SNMP agent. Two of them are implemented in this block:
For this purpose, the block sends either an SNMP GetRequest or SNMP GetNextRequest command for a tag by means of
an Object Identifier (OID) to an SNMP agent. The SNMP agent responds with an SNMP GetResponse telegram containing
the requested data or an error message.
Parameter
Figure 7-2: LSNMP_Get
LSNMP_Get
abort Input Bool With a positive edge, the current job is canceled.
The command is only accepted if the block is currently busy.
getNext Input Bool FALSE: Requests the tag for the specified OID
TRUE: Requests the next tag in the MIB tree for the specified OID
oID Input String Object Identifier of the requested tag according to dot notation, e.g.
'1.3.6.1.2.1.1.5.0'
timeOut Input Time Time after which a job should be automatically canceled
done Output Bool TRUE: Job successfully executed. The received data is available at the
"varBinding" parameter.
status Output Word Status and error codes (see chapter 7.8)
7.3. LSNMP_GetBulk
Functional description
The block "LSNMP_GetBulk" is used to read out large amounts of data with only one response telegram.
The block "LSnmp_GetBulk" uses the SNMP GetBulk request command and requires SNMPv2 for this – an extension of
SNMPv1.
The GetBulk command performs several GetNext queries in the SNMP agent. The maximum number of GetNext
commands can be specified via a parameterizable repetition factor in the GetBulk telegram.
The return values of all queried objects are compiled in a single response telegram and transferred. The block
"LSNMP_GetBulk" then outputs the received data stream divided into the individual tags.
Parameter
Figure 7-3: LSNMP_GetBulk
LSNMP_GetBulk
diagnostics "typeDiagnostics"
connParam
"LSNMP_typeConnParam" "LSNMP_typeConnParam"
varBindings
Array[*] of "LSNMP_typeVarBind" Array[*] of "LSNMP_typeVarBind"
abort Input Bool With a positive edge, the current job is canceled.
The command is only accepted if the block is currently busy.
oID Input String Object Identifier of the first requested tag according to dot notation,
e.g. '1.3.6.1.2.1.1.5.0'
timeOut Input Time Time after which a job should be automatically canceled
done Output Bool TRUE: Job successfully executed. The received data is available at the
"varBindings" parameter.
status Output Word Status and error codes (see chapter 7.8)
7.4. LSNMP_Set
Description
The "LSNMP_Set" block sends a write job to an SNMP agent via the SNMP SetRequest command for an SNMP tag.
In the SetResponse telegram the block receives the result of the write request from the SNMP agent. If the tag read in
does not match the written value, an error will be read out. The Write job must be set again.
Parameter
Figure 7-4: LSNMP_Set
LSNMP_Set
status Word
diagnostics "typeDiagnostics"
connParam
"LSNMP_typeConnParam" "LSNMP_typeConnParam"
varBinding
"LSNMP_typeVarBind" "LSNMP_typeVarBind"
abort Input Bool With a positive edge, the current job is canceled.
The command is only accepted if the block is currently busy.
timeOut Input Time Time after which a job should be automatically canceled
status Output Word Status and error codes (see chapter 7.8)
7.5. LSNMP_SendTrap
Description
SNMP agents (e.g. an S7 CPU) send messages to the network management system via SNMP traps to display changes in
the network status.
The "LSNMP_SendTrap" block is a parameterizable function block for sending SNMP traps.
NOTE The SNMP agents do not receive acknowledgement for sent traps.
Parameter
Figure 7-5: LSNMP_SendTrap
LSNMP_SendTrap
busy Bool
error Bool
status Word
diagnostics "typeDiagnostics"
connParam
"LSNMP_typeConnParam" "LSNMP_typeConnParam"
data
"LSNMP_typeDataSendTrap" "LSNMP_typeDataSendTrap"
status Output Word Status and error codes (see chapter 7.8)
NOTE If you want to run multiple blocks of the library or instances of the same block at the same time, the
parameters "connID" and "localPort" must be unique for each instance.
LSNMP_typeDataSendTrap
The PLC data type "LSNMP_typeDataSendTrap" contains all parameterizable data that can be sent to an SNMP manager
with "LSNMP_SendTrap".
oID String Object Identifier of the agent generating the trap, in dot notation, e.g.
'1.3.6.1.2.1.1.5.0'
varBinding "LSNMP_typeVarBind" Optional tag binding to be sent with the trap. In this case, the trap ID is
considered sufficient information.
LSNMP_typeVarBind
With SNMP, tags are transmitted as "tag bindings". A tag binding consists of the Object Identifier of the tag and the actual
value. The PLC data type "LSNMP_typeVarBind" defines such a tag binding. So that the block or the user can interpret the
value correctly, the data type and the length are also specified.
oID String Object Identifier of the tag in dot notation, e.g. '1.3.6.1.2.1.1.5.0'
Code Description
16#8107 The received value is too large for the memory area at the "varBinding" or "varBindings" parameter.
16#8109 The received packet is too large for the internal reception area.
16#8201 The value at the parameter "maxRepetitions" is larger than the array at the parameter "varBindings".
Code Description
16#8408 Time-out: The job could not be completed within the specified time. Possible reasons:
• Partner is not available
• Community is wrong
16#85xx SNMP error received from partner. The SNMP error code is output in the lower byte and
"diagnostics.subfunctionStatus". Descriptions of the SNMP error codes can be found online.
8. LSNTP
8.1. Overview
8.1.1. Range of Functions
For automation cells or subsystems, it is often secondary to use the exact "atomic time". It is usually sufficient to have a
common time base for all automation components.
The use of a SIMATIC S7 CPU as an SNTP server enables flexible and simple synchronization of systems and subsystems,
for example, to obtain meaningful timestamps for error messages and logging data system-wide.
The library provides a function block that performs the following functions:
• Receiving and evaluating an NTP telegram from an (S)NTP Client
• Creating and sending an NTP telegram to the client for time synchronization
Example scenario
The following figure shows a possible example configuration with a SIMATIC S7-1500 CPU as the SNTP server. Here, the
CPU synchronizes its time with an external NTP server. However, configurations with other clocks are also possible.
S7-1500
NTP-Server NTP-Client & SNTP-Server
Ethernet
20.02.2020 PROFINET
12:45:45.0 20.02.2020
12:45:45.0
Time synchronization
20.02.2020
12:45:45.0
20.02.2020
20.02.2020
12:45:45.0 S7-1200 12:45:45.0
SIMATIC HMI NTP-Client
S7-1500
NTP-Client NTP-Client
Function blocks
Table 8-1: Function blocks
LSNTP_typeTelegram Data type V1.0.0 Describes the structure of the NTP telegram.
8.1.3. Validity
The library is valid for:
• SIMATIC S7-1500 Controllers as of firmware V2.0
• SIMATIC S7-1200 Controllers as of firmware V4.2
• SIMATIC ET 200SP Open Controllers as of firmware V2.0
• SIMATIC S7-1500 Software Controllers as of Firmware V2.0
• CP 1543-1, CP 1542SP-1, CP 1542SP-1 IRC, CP 1543SP-1 as of firmware V1.0
• CP 1243-1, CP 1243-8 as of firmware V2.0
8.2. LSNTP_Server
8.2.1. Interface Description
Description
The function block implements the function of the SNTP server.
Parameter
Figure 8-2: LSNTP_Server
LSNTP_Server
referenceID Input USInt The input specifies from which time source the server CPU
obtains the time:
• 0: uncalibrated (set "by hand")
• 1: primary reference (e.g., DCF 77)
• 2: secondary reference (e.g., from GPS receiver)
The information is passed on to the NTP client in the SNTP
protocol.
lastTimeSet Input DTL Time specification when the time of the controller was last set.
This information is passed on to the NTP client in the SNTP
protocol.
If the parameter is not assigned, the current time of the CPU is
transferred instead.
status Output Word Status and error codes (see chapter 8.2.2)
Code Description
9. LSyslog
9.1. Overview
9.1.1. Range of Functions
With the simply designed syslog protocol, applications can send messages, warnings, or error conditions to a syslog
server. syslog is typically used for computer system management and security monitoring and has now established itself
as a standard (RFC 5424) in logging.
This library emulates the syslog protocol and offers the possibility to send messages via UDP or TCP with optional TLS
encryption to a syslog server, such as SINEC INS.
Figure 9-1
syslog server
Server
PC
syslog
telegrams
S7-400
S7-1500 S7-300
Open
S7-1200 Controller
SIMATIC
Stations
LSyslog_Sen d LSyslog_Sen d LSyslog_Sen d LSyslog_Sen d LSyslog_Sen d
Alarms,
Warnings, Process
Alarms
Function blocks
Table 9-1: Function blocks
LSyslog_typeMessage V1.1.0 This data type describes all tag data of a syslog
message.
9.1.3. Validity
The library is valid for:
• SIMATIC S7-1500 Controllers as of firmware V2.0
• SIMATIC S7-1200 Controllers as of firmware V4.4
• SIMATIC ET 200SP Open Controllers as of firmware V2.5
• SIMATIC S7-1500 Software Controllers as of firmware V2.5
• CP 1543-1, CP 1542SP-1, CP 1542SP-1 IRC, CP 1543SP-1 as of firmware V1.0
• CP 1243-1, CP 1243-8 as of firmware V2.0
9.2. LSyslog_Send
9.2.1. Interface Description
Description
The FB "LSyslog_Send" establishes a connection to the syslog server via UDP or TCP with optional TLS encryption and
sends syslog messages to the syslog server upon request. Afterwards, the connection is automatically broken again.
Parameter
Figure 9-2: LSyslog_Send
LSyslog_Send
busy Bool
error Bool
status Word
diagnostics "typeDiagnostics"
connParam
TCON_IP_V4_SEC TCON_IP_V4_SEC
message
"LSyslog_typeMessage" "LSyslog_typeMessage"
execute Input Bool With a positive edge, the connection to the syslog server is
established and the syslog message is sent.
done Output Bool TRUE: The send job was successfully executed
status Output Word Status and error codes (see chapter 9.2.2)
NOTE In the FB the octet stuffing method for syslog is implemented over TCP by appending a line feed to the
end of the message.
The octet counting method is also implemented, but commented out.
If you want to use the octet counting method for your application instead, you can adjust the
comments in the build message region accordingly.
NOTE You will find an application example for the usage of certificates in TIA Portal in the Siemens Industry
Online Support:
https://support.industry.siemens.com/cs/ww/en/view/109769068
Code Description
16#8408 Time-out: The job could not be completed within the specified time.
Possible reasons for a time-out:
• Partner is not available
hostname String Host name that identifies the machine that originally sent the syslog message, e.g. FQDN, IP
address, or PLC name.
If no host name is used, the tag must be set to "-".
appName String Application name that identifies the device or application that generated the message.
If no application name is used, the tag must be set to "-".
You can use the FBs as a template for your own communication projects or the implementation of other IP-based
protocols.
10.1.1.2. Components
The following FBs are available as master copies:
Name Description
10.1.1.3. Validity
The master copies "IsoOnTcpTemplate", "TcpTemplate" and "UdpTemplate" are valid for:
10.1.2. IsoOnTcpTemplate
Functional description
The FB "IsoOnTcpTemplate" implements a complete ISO-on-TCP communication relation to a partner. It encapsulates all
OUC commands in a user-friendly shell to perform the following functions:
• Connection establishment and termination via the input "enable"
• Send user data of length "sendLen" to the partner via the "sendData" input as soon as the "send" input detects a
positive edge.
• Receive data from a partner and output it in the receive area at the "rcvdData" parameter.
• Output the status of transmission and connection at the output parameter "status".
NOTE If the received data is stored in an optimized data block, the input parameter "rcvLen" must contain the
value 0. For a standard data block, this input parameter must contain the number of bytes to be
received.
Parameter
Figure 10-1
IsoOnTcpTemplate
rcvdLen UDInt
status Word
diagnostics "typeDiagnostics"
rcvdData
Variant Variant
sendData
Variant Variant
Table 10-2
enable Input Bool Release signal for connection setup and data exchange
sendLen Input UInt Maximum number of bytes sent with the job
valid Output Bool TRUE: The block executes its function without error
done Output Bool TRUE: The send job was successfully executed
status Output Word Status and error codes (see chapter 10.1.6)
10.1.3. TcpTemplate
Functional description
The FB "TcpTemplate" implements a complete TCP communication relationship to a partner. It encapsulates all OUC
commands in a user-friendly shell to perform the following functions:
• Connection establishment and termination via the input "enable"
• Send user data of length "sendLen" to the partner via the "sendData" input as soon as the "send" input detects a
positive edge.
• Receive data from a partner and output it in the receive area at the "rcvdData" parameter.
• Output the status of transmission and connection at the output parameter "status".
NOTE Enable the Adhoc mode to receive telegrams with dynamic data length. In this case the input
parameter "rcvLen" is irrelevant.
Deactivate the Adhoc mode to receive telegrams with fixed data length. In this case you have to
specify the number of bytes to be received at the input parameter "rcvLen".
Parameter
Figure 10-2
TcpTemplate
status Word
diagnostics "typeDiagnostics"
rcvdData
Array[*] of Byte Array[*] of Byte
sendData
Array[*] of Byte Array[*] of Byte
Table 10-3
enable Input Bool Release signal for connection setup and data exchange
Note
Parameter is irrelevant when Adhoc mode is enabled. As much data is read
as is currently available. The max. data length is defined by the length of
the receive area referenced by rcvData.
sendLen Input UDInt Maximum number of bytes sent with the job.
• S7-1500 CPUs: maximum 65536 bytes
• S7-1200 CPUs maximum 8192 bytes
valid Output Bool TRUE: The block executes its function without error
done Output Bool TRUE: The send job was successfully executed
status Output Word Status and error codes (see chapter 10.1.6)
10.1.4. TcpSecTemplate
Functional description
The FB "TcpSecTemplate" implements a complete TCP communication relationship to a partner.
With the FB "TcpSecTemplate" and with S7-1200 CPUs as of firmware V4.4 and S7-1500 CPUs from firmware V2.0, it is
possible to parameterize the communication connections at TCP via IPv4 by means of Secure Communication.
It encapsulates all OUC commands in a user-friendly shell to perform the following functions:
• Connection establishment and termination via the input "enable"
• Send user data of length "sendLen" to the partner via the "sendData" input as soon as the "send" input detects a
positive edge
• Receive data from a partner and output it in the receive area at the "rcvdData" parameter.
• Output the status of transmission and connection at the output parameter "status"
NOTE Enable Adhoc mode to receive telegrams with dynamic data length. In this case the input parameter
"rcvLen" is irrelevant.
Deactivate the Adhoc mode to receive telegrams with fixed data length. In this case you have to
specify the number of bytes to be received at the input parameter "rcvLen".
Parameter
Figure 10-3
TcpSecTemplate
status Word
diagnostics "typeDiagnostics"
rcvdData
Array[*] of Byte Array[*] of Byte
sendData
Array[*] of Byte Array[*] of Byte
Table 10-4
enable Input Bool Release signal for connection setup and data exchange
Note
Parameter is irrelevant when Adhoc mode is enabled. As much data is
read as is currently available. The max. data length is defined by the
length of the receive area referenced by rcvData.
Note
If the Adhoc mode is activated, the total length of the telegram is
transmitted in the first 4 bytes. These additional 4 bytes must be taken
into account at the "sendLen" parameter, i.e.
sendLen = 4 byte + user data
connParam Input TCON_IP_V4_SEC Connection parameters (see TIA Portal information system)
valid Output Bool TRUE: The block executes its function without error
done Output Bool TRUE: The send job was successfully executed
status Output Word Status and error codes (see chapter 10.1.6)
10.1.5. UdpTemplate
Functional description
The FB "UdpTemplate" implements a complete UDP communication relation to a partner. It encapsulates all OUC
commands in a user-friendly shell module to perform the following functions:
• Connection establishment and termination via the input "enable"
• Send user data at the "sendData" input with the length "sendLen" to the partner as soon as the "send" input detects a
positive edge
• Receive data from a partner and output it in the receive area at the "rcvdData" parameter
• Output the status of transmission and connection at the output parameter "status"
Parameter
Figure 10-4
UdpTemplate
diagnostics "typeDiagnostics"
rcvdData
Variant Variant
sendData
Variant Variant
Table 10-5
enable Input Bool Release signal for connection setup and data exchange
sendLen Input UInt Number of bytes that are to be sent with the job
Value range: 1 to 1472 (as of firmware version V2.5 of the S7-1500 CPUs
with Unicast or Multicast: 1 to 2048)
addrTurcv Input TADDR_Param Address information of the communication partner for the "TURCV"
command
Detailed information can be found in the TIA Portal information system.
addrTusend Input TADDR_Param Address information of the communication partner for the "TSEND"
command
Detailed information can be found in the TIA Portal information system.
valid Output Bool TRUE: The block executes its function without error
done Output Bool TRUE: The send job was successfully executed
status Output Word Status and error codes (see chapter 10.1.6)
NOTE When sending more than 1472 bytes, you must ensure that your receiver supports more than 1472
bytes. If this is not the case, you will not notice the failed reception on the transmitter side.
Code Meaning
16#8408 Time-out: The job could not be completed within the specified time.
Possible reasons for a time-out:
• Partner is not available
NOTE For information on library use in general, see the Guide to Library Use:
https://support.industry.siemens.com/cs/ww/en/view/109747503
NOTE All blocks in the library were created in accordance with the programming style guide:
https://support.industry.siemens.com/cs/ww/en/view/81318674
• How do you open, edit and upgrade global libraries in the TIA Portal?
https://support.industry.siemens.com/cs/ww/en/view/37364723
• TIA Portal in under 10 minutes: Time Savers – Global libraries
https://support.industry.siemens.com/cs/ww/en/view/78529894
• Which elements from STEP 7 (TIA Portal) and WinCC (TIA Portal) can be stored in a library as a type or as a master
copy?
https://support.industry.siemens.com/cs/ww/en/view/109476862
• When starting the TIA Portal V13 and higher, how do you get a global library to open automatically and use it as
corporate library, for example?
https://support.industry.siemens.com/cs/ww/en/view/100451450
11.2. Diagnostics
The blocks use a uniform diagnostics concept according to the programming style guide for SIMATIC S7-1200/1500.
All blocks have the outputs "busy", "error", "status", and "diagnostics". Depending on the type of block (continuous or one-
time asynchronous processing), it can also have an output of "valid" or "done".
If the block implements both continuous and one-time asynchronous functions (e.g. connection setup and monitoring
and sending a message), it can also have both outputs.
The "valid" or "done", "busy", "error", and "status" outputs show the current status and errors, while the "diagnostics"
output provides a diagnostic structure with detailed information in the event of an error.
For more information, refer to the programming style guide for SIMATIC S7-1200/1500:
https://support.industry.siemens.com/cs/ww/en/view/81318674
status
The "status" output provides current information as well as errors according to the following value range.
Detailed information on the status/error codes can be found in the "Error Handling" chapter of the respective library.
First call after input of a new job (rising edge on "execute") 16#7001
Reserved 16#8800..16#8FFF
diagnostics
In the event of an error, the "diagnostics" output gives detailed information about the pending error.
The values of the "diagnostics" output are only written when an error occurs and are retained until a new job is started or
another error has occurred and overwrites the values.
Unless otherwise described, the "diagnostics" output uses the PLC data type "typeDiagnostics", which is structured as
follows:
subfunctionStatus DWord Status or returned value from internal commands or FBs where an error occurred.
For detailed information, refer to the online help for the respective command or the
documentation of the respective FB.
stateNumber DInt State of the internal state machine in which the error occurred.
12. Appendix
12.1. Service and Support
Industry Online Support
Do you have any questions or need assistance?
Siemens Industry Online Support offers round the clock access to our entire service and support know-how and portfolio.
The Industry Online Support is the central address for information about our products, solutions and services.
Product information, manuals, downloads, FAQs, application examples and videos – all information is accessible with just
a few mouse clicks:
support.industry.siemens.com
Technical Support
The Technical Support of Siemens Industry provides you fast and competent support regarding all technical queries with
numerous tailor-made offers – ranging from basic support to individual support contracts. Please send queries to
Technical Support via Web form:
siemens.com/SupportRequest
Service offer
Our range of services includes the following:
The Siemens Industry Mall is the platform on which the entire siemens Industry product portfolio is accessible. From the
selection of products to the order and the delivery tracking, the Industry Mall enables the complete purchasing processing
– directly and independently of time and location:
mall.industry.siemens.com
No. Topic
\3\ Application example for library "LCom" as well as blocks for S7-300/400 and SIMOTION
https://support.industry.siemens.com/cs/ww/en/view/48955385
NOTE In addition to this change documentation, you'll find a detailed changelog in the respective block.
V2.1.0 04/2024 • Added FC "IsIPAddress" to evaluate whether a partner address in the form of a String
contains an IP address or a hostname and integrated it into LFTP, LHTTP & LMQTT
• LHTTP:
- Changed behavior that HTTPS is used per default
- Improved handling of unusual responses
• LMQTT: Fixed area length error when "willMsgLen" = "0"
• LOpcUa:
- Renamed LOpcUa_PubMqtt to LOpcUaPubMqttUadp and LOpcUa_SubMqtt to
LOpcUa_SubMqttUadp
- Updated LMQTT_Client to V4.0.3 in LOpcUa_PubMqttUadp,
LOpcUa_SubMqttUadp, LOpcUa_PubMqttJson and LOpcUa_SubMqttJson
- Enabled simulation support for LOpcUa_SubUdp
- Fixed inconsistencies in library
• LSNMP: Bug fixes in LSNMP_GetBulk
• Removed LMindConn