Siemens S7 Flux Asset
Introduction
The Siemens S7 Connector is a flux asset provided by Coreflux that facilitates seamless communication between Siemens S7 PLCs (Programmable Logic Controllers) and your data hub. This guide offers a comprehensive overview of the Siemens S7 Connector, detailing its features, benefits, installation, configuration, and usage.
What is Siemens S7?
Siemens S7 is a family of PLCs developed by Siemens for automation tasks in industrial processes. These controllers are widely used in various industries due to their reliability, flexibility, and performance.
Features and Benefits
- Seamless Communication: Enables direct communication between Siemens S7 PLCs and your data hub.
- Real-time Monitoring: Allows real-time monitoring of Siemens S7 PLCs.
- Easy Integration: Simplifies the integration of Siemens S7 PLCs with your IIoT projects.
- Configurable Parameters: Offers a range of parameters to customize the connection to your specific needs.
Prerequisites
Before you install and configure the Siemens S7 Connector, ensure you have the following prerequisites:
- Basic understanding of the MQTT protocol;
- Coreflux account;
- Coreflux v1.2 or higher;
- Coreflux MQTT Broker;
- MQTT Client (e.g., MQTT Explorer);
- Access to a Siemens S7 PLC.
Connector Installation
Using Coreflux HUB
Please refere to general docs for connector installation trough the Coreflux HUB.
Using Coreflux HUBLESS
Connector management and control are conducted using the MQTT protocol. Commands (payload) are sent to the $SYS/Coreflux/Command topic. The results of these commands are published to $SYS/Coreflux/Command/Output. The following steps wull focus solely on the payload that needs to be sent.
- Connect to the Coreflux MQTT Broker using your preferred client;
- Login using your coreflux account:
- Check your available connectors:
- Install the connector:
- If there were no issues during the installation, you should receive a message on the $SYS/Coreflux/Command/Output topic:
Connector Configuration
Before using the connector, it must be properly configured. This configuration process entails adjusting various parameters that affect its functionality, the setup of the device, and how they interact with each other. This involves specifying the device's IP address and selecting which symbols to read from the device, among other settings. The configuration is detailed in a JSON file, divided into three main sections: MQTT Parameters, Siemens S7 Parameters and Tag Parameters.
The instructiosn bellow will guide you through configuring each section.
By the end, you will have a comprehensive example configuration that can be tailored to your specific needs.
Warning: If a parameter is not included in your connector's configuration and it is not required, a default value will be applied. Incorrect configuration may cause the connector to not work as intended.
Information_source: This configuration is presented using a hubless setup as an example. The key takeaway is the understanding of the parameters and their significance. If you are configuring the connector via Coreflux Hub, the same parameters and configurations apply.
MQTT Parameters
The MQTTParameters in the JSON configuration define how to connect to an MQTT broker, specifying the communication details. The Address and Port indicate the broker's network location (in this case, 127.0.0.1 on port 1883), which is where the data will be sent to or received from. The parameters also detail authentication methods and the use of TLS for secure communication. This setup determines the pathway for data exchange between the device and the MQTT broker, facilitating the monitoring or control of device operations.
Parameter | Description | Required | Example | Default Value |
---|---|---|---|---|
Port | Port number on which the MQTT broker is running. | Yes | 1883 |
1883 |
Address | IP address or hostname of the MQTT broker. | Yes | "127.0.0.1" |
"127.0.0.1" |
IsAnonymous | Indicates if the connection is anonymous (no username/password required). | No | true |
true |
Username | Username for authentication, if not anonymous. | No | "" |
"" |
Password | Password for authentication, if not anonymous. | No | "" |
"" |
WithTLS | Specifies whether TLS encryption is enabled for secure communication. | No | true |
false |
Example:
{
"MQTTParameters": {
"Port": 1883,
"Address": "127.0.0.1",
"IsAnonymous": true,
"Username": "",
"Password": "",
"WithTLS": false
}
}
Siemens S7 Parameters
The Siemens S7 Parameters in the JSON configuration specify the setup for the Siemens S7 communication between the PLC and the connector.
These parameters require the PLC's IP address, rack and slot, as well as the retry attempts, the retry time, in seconds, the refresh time, in milliseconds, and the connection type to the PLC.
Check here which rack and slot to use for your device.
Parameter | Description | Required | Example | Default Value |
---|---|---|---|---|
IP | The PLC device IP address | Yes | "127.0.0.1" |
"" |
PLCRack | The rack number of the PLC in the hardware configuration | Yes | 0 |
0 |
PLCSlot | The slot number of the CPU in the PLC rack | Yes | 1 |
1 |
ConnectionType | Specifies the type of connection to the PLC | Yes | 3 |
1 |
RefreshTimeInMs | The time interval (in milliseconds) for refreshing data from the PLC. Defines how often the system polls the PLC for updates | Yes | 200 |
0 |
Retries | The number of retry attempts if the connection to the PLC fails | No | 2 |
0 |
RetryTimeInSeconds | The time interval (in seconds) between connection retries | No | 5 |
0 |
Example:
{
"MQTTParameters": {
"Port": 1883,
"Address": "127.0.0.1",
"IsAnonymous": true,
"Username": "",
"Password": "",
"WithTLS": false
},
"SiemensS7Parameters":{
"IP": "192.168.0.1",
"PLCRack": 0,
"PLCSlot": 1,
"ConnectionType": 3,
"RefreshTimeInMs": 200,
"Retries": 2,
"RetryTimeInSeconds":5
}
}
Tags
Tags are crucial components that simplify the set of actions the connector will perform in the workspace. Each Tag in the configuration represents a unique connection between a MQTT topic and a Siemens S7 PLC variable. The parameters for each tag include the Variable Type, the Data Block Value, the String Size, the Byte, the Bit, the Data Type and the Behaviour.
Parameter | Description | Required | Example | Default Value |
---|---|---|---|---|
Name | Unique Tag Identifier | Yes | "RoomTemperature" |
"TagName" |
Route | Specifies the direction of data flow within the system. Acceptable values are: 'ToSubscribers' (0), 'ToOther' (1). |
Yes | 0 |
1 |
Publish | Choose how data is sent. Acceptable values are: 'Update' (0), 'Cyclic' (1), 'Once' (2) |
Yes | 0 |
2 |
PublishCycle | Specifies the interval for publishing messages when 'publish' is set to 'Cyclic'. Must be a value between 1 and 86,400 seconds (24 hours). |
No | 500 |
1 |
MqttTopic | Unique Topic connecting with the specified Register | Yes | "room/temp" |
"mqtt/topic" |
MqttRetain | Defines if the message should be retained. Options are: true or false. |
Yes | true |
false |
QualityOfService | Defines the level of delivery assurance for MQTT messages. The options are: 'AtMostOnce' (0), 'AtLeastOnce' (1), 'ExactlyOnce' (1). |
Yes | 2 |
2 |
VariableType | Where the data is stored in the PLC. Options are 'Memory' (0), 'Input' (1), 'Output' (2) and 'DataBlock' (3) |
Yes | 1 |
0 |
DataBlockValue | The data block number where the value to read is located, when Variable Type is Data Block | Conditional | 3 |
0 |
Byte | The starting byte | Yes | 0 |
0 |
Bit | Specific bit within the byte | Yes | 3 |
1 |
DataType | Type of data stored at a specific location in the PLC. Options are 'BOOL' (0), 'BYTE' (1), 'INT' (2), 'WORD' (3), 'DINT' (4), 'DWORD' (5), 'REAL' (6), 'STRING' (7) |
Yes | 6 |
0 |
StringSize | Defines the max length for the string, when Data Type is String | Conditional | 10 |
0 |
Behaviour | Tag behaviour when a value is read/received. Options are 'TriggerOnlyDifferent' (0) or 'TriggerAlways' (1) |
Yes | 1 |
0 |
Example:
{
"MQTTParameters": {
"Port": 1883,
"Address": "127.0.0.1",
"IsAnonymous": true,
"Username": "",
"Password": "",
"WithTLS": false
},
"SiemensS7Parameters":{
"IP": "192.168.0.1",
"PLCRack": 0,
"PLCSlot": 1,
"ConnectionType": 3,
"RefreshTimeInMs": 200,
"Retries": 2,
"RetryTimeInSeconds":5
},
"Tags":
[
{
"Name" : "FromMqttToS7",
"Route" : 1,
"Publish" : 0,
"PublishCycle" : 127,
"MqttTopic" : "set/temp",
"MqttRetain" : true,
"QualityOfService" : 0,
"VariableType": 1,
"Byte": 0,
"Bit": 1,
"DataType": 6,
"Behaviour": 1
},
{
"Name":"FromS7ToMqtt",
"Route": 0,
"Publish" : 0,
"PublishCycle" : 127,
"MqttTopic" : "read/temp",
"MqttRetain" : true,
"QualityOfService" : 0,
"VariableType": 3,
"DataBlockValue": 2,
"Byte": 0,
"Bit":0,
"DataType":3,
"Behaviour":0
}
]
}
PLC Rack and Slot Configuration
These two elements must align with the configuration of the running PLC. Typically, it should be PLC Rack=0 and PLC Slot=1. However, you can verify this configuration in TiaPortal: Navigate to Devices > Device Configuration > click on CPU > Project Information. In this example, it would show Rack 0, Slot 1.
Rack and Slot Configuration for different Siemens PLCs
PLC Model | Rack | Slot | Notes |
---|---|---|---|
S7-300 | 0 | 2 | Always like this |
S7-400 | Defined in project | Defined in project | Follow hardware configuration in Tia Portal or STEP 7 |
WinAC | Defined in project | Defined in project | Follow hardware configuration in Tia Portal or STEP 7 |
S7-1200 | 0 | 0 or 1 | - |
S7-1500 | 0 | 0 or 1 | - |
WinAC IE | 0 | 0 or follow hardware configuration | - |
Connection Resource
By default, the client connects as a PG (1) (the programming console). With this function, it's possible to change the connection resource type to OP (2) or S7 Basic (3-10) (a generic data transfer connection).
In the hardware configuration (Simatic Manager) of the CPU, under the “Communication” tab, you can modify, PLC-side, the connection’s distribution. Essentially, this represents a protocol resource on the PLC side.
Enabling “Connection mechanisms” in Tia Portal
Due to a series of hacking incidents targeting the Siemens Tia Portal, especially the S7–1200 and S7–1500 series, Siemens introduced a solution where the user decides if remote partners can access to read/write the internal variables of the devices they're connecting to.
For the S72MQTT Flux asset to read/write into the PLC, it's essential to activate the PUT/GET communication access. Here's how to do it:
- Connect to Your PLC: Connect your Tia Portal project to your target PLC and then navigate to “Local modules” and select your PLC CPU.
- Access Properties: Double-click on the device or go to Properties and scroll down to select “Protection & Security”.
- Connection Mechanisms: Open “Protection & Security” and select “Connection mechanisms”.
- Enable PUT/GET: Ensure the option “Permit access with PUT/GET communication from remote partner” is selected.
- Compile and Download: Compile and download your updated hardware configuration.
FAQ
General Questions
What is the Siemens S7 Connector?
The Siemens S7 Connector is a flux asset provided by Coreflux that enables seamless communication between Siemens S7 PLCs and your data hub. It allows you to monitor them in real-time and easily integrate them with your IIoT projects.
What are the prerequisites for using the Siemens S7 Connector?
Before you install and configure the Siemens S7 Connector, ensure you have the following prerequisites:
- Basic understanding of the MQTT protocol;
- Coreflux account;
- Coreflux v1.2 or higher;
- Coreflux MQTT Broker asset;
- MQTT Client (e.g., MQTT Explorer);
- Access to a Siemens S7 PLC.
How do I install the Siemens S7 Connector?
The Siemens S7 Connector can be installed via GUI or command-line. Detailed installation instructions can be found in the Installation section of the Siemens S7 Connector documentation.
Configuration Questions
How do I configure the Siemens S7 Connector?
To configure the Siemens S7 Connector, you need to run only one command:
The<guid>
is a unique asset id that is generated during the installation. To retrieve the connector guid, refer to the $SYS/Coreflux/Assets
topic.
The <configuration>
parameter is where you are able to set the asset settings. Detailed configuration instructions and an example configuration can be found in the Configuration section of the Siemens S7 Connector documentation.
What are the parameters in the configuration?
The configuration consists of three main sections: MQTTParameters
, SiemensS7Parameters
, and Tags
.
- MQTTParameters
are used to configure the connection between the client and the MQTT broker.
- SiemensS7Parameters
are used to configure the connection between the MQTT Broker and the Siemens S7 PLC.
- Tags
is an array of "Tag", each containing parameters for a unique PLC variable and MQTT topic connection.
Details of each parameter can be found in the Configuration section of the Siemens S7 Connector documentation.
Usage Questions
How do I run the Siemens S7 Connector?
To run the Siemens S7 Connector, publish the “-R” (run) command with the asset guid to $SYS/Coreflux/Cloud/Command
topic:
Troubleshooting Questions
The Siemens S7 Connector is not running, what should I do?
Ensure that you have correctly installed and configured the Siemens S7 Connector. Check the $SYS/Coreflux/Assets
topic to confirm that the asset guid is correct. If the problem persists, consult the Appendix page for additional troubleshooting tips or join our Discord community for help.
I am not receiving any data, what should I do?
Ensure that the Siemens S7 Connector Asset is running and that the MQTT client is correctly configured. Check the DebugTopic
specified in the MQTTParameters
section of the configuration for any connection state feedback. If the problem persists, consult the Appendix page for additional troubleshooting tips or join our Discord community for help.