S7 - TSPP (Time Stamp Push Protocol)
Allgemein
Mit TSPP ist es möglich, Daten von der SPS an den WinCC OA Treiber spontan und mit Zeitstempel, der in der SPS generiert wurde, zu übermitteln. Dies erlaubt die Optimierung der Kommunikation, da es möglich ist, Daten nur bei Wertänderungen zu übermitteln. Zudem erlaubt es eine bessere Auflösung von Zeitstempeln im Vergleich zum Polling, da die Zeitstempel bereits in der SPS generiert werden, sobald eine Wertänderung wahrgenommen wird.
Um de TSPP-Modus zu verwenden, ist ein gewisser Parametrierungsaufwand an der SPS erforderlich, da die SPS einen festgelegten Datenpuffer mit den zu übertragenden Daten vorbereiten muss und sie diese Daten über den BSEND-Funktionsaufruf senden muss. Die Struktur des Datenpuffers wird im Folgenden näher beschrieben.
Der TSPP-Datenblock besteht aus einer Kopfzeile (Header) und mehreren gleichlangen Datensätzen. Die Länge eines Datensatzes wird in der Kopfzeile (Header) definiert und die Anzahl der Datensätze wird aus der gesamten Blocklänge kalkuliert.
Jeder Datensatz besteht aus:
-
UTC Zeitstempel,
-
DB-Nummer,
-
Startadresse, welche die Adresse des ersten Words im Datensatz ist
-
Daten in den folgenden Words.
Im TSPP Datensatz muss ein UTC Zeitstempel vorhanden sein. Wenn die SPS mit lokaler Zeit läuft, so müssen in der SPS beim Generieren des Zeitstempels für den TSPP Datensatz immer zwei Stunden abgezogen werden.
Die Größe eines Datensatzes ist beliebig. Es kann zum Beispiel mehrere kleine Datensätze oder weniger größere Datensätze in einem TSPP-Block geben. Die maximale Größe des BSEND-Funktionsaufrufes darf nicht überschritten werden.
Das Datenmapping wird wie üblich durchgeführt. Der Eingang-Adressenmodus muss spontan sein und es können alle Typen von Adressen parametriert werden. Wenn eine Adresse zum Beispiel DB 100, die Startadresse 1000 und 4 Words hat, sind die Bitadressen DB100.DBX1000.0 bis DB100.DBX1007.7 von diesem Datensatz betroffen.
Die DB müssen vorhanden sein in der SPS, anderenfalls kann keine Kommunikation erfolgen.
Byte | Description | Meaning | Content | Format | Data Set Length | Data Length |
---|---|---|---|---|---|---|
0 | TS Header | Time Stamp Protocol ID 1 | T | char | ||
1 | Time Stamp Protocol ID 2 | S | char | |||
2 | Time Stamp Protocol ID 3 | P | char | |||
3 | record length | n | byte | |||
4 | length of entire block [WORD] | (6 + n) * x | int | |||
5 | ||||||
6 | 1. record with timestamp | Date Time | SIMATIC TIME & DATE (8 Byte) |
(6 + n) [WORD] |
||
7 | ||||||
8 | ||||||
9 | ||||||
10 | ||||||
11 | ||||||
12 | ||||||
13 | ||||||
14 | DB Number | UINT | ||||
15 | ||||||
16 | Start Address | UINT | ||||
17 | ||||||
18 | Value 1 | WORD |
n [WORD] |
|||
29 | ||||||
20 | Value 2 | WORD | ||||
21 | ||||||
22 | ................. | |||||
... | ||||||
... | Value n | WORD | ||||
... | ||||||
... | 2. record with timestamp | Date Time | SIMATIC TIME & DATE (8 Byte) |
(6 + n) [WORD]
|
||
... | ||||||
... | ||||||
... | ||||||
... | ||||||
... | ||||||
... | ||||||
... | ||||||
... | DB Number | UINT | ||||
... | ||||||
... | Start Address | UINT | ||||
... | ||||||
... | Value 1 | WORD |
n [WORD] |
|||
... | ||||||
... | Value 2 | WORD | ||||
... | ||||||
... | ................. | |||||
... | ||||||
... | Value n | WORD | ||||
... | ||||||
...
|
||||||
... | x. record with timestamp | Date Time | SIMATIC TIME & DATE (8 Byte) |
(6 + n) [WORD] |
||
... | ||||||
... | ||||||
... | ||||||
... | ||||||
... | ||||||
... | ||||||
... | ||||||
... | DB Number | UINT | ||||
... | ||||||
... | Start Address | UINT | ||||
... | ||||||
... | Value 1 | WORD |
n [WORD] |
|||
... | ||||||
... | Value 2 | WORD | ||||
... | ||||||
... | ................. | |||||
... | ||||||
... | Value n | WORD | ||||
x |
Die "record length" ist die Anzahl der 16Bit-Wörter in einem Record ohne den 6-Wort Recordheader.
Die "length of entire block" ist die Anzahl der 16Bit Wörter aller Records. Also (6+n)*x, wobei x für die Anzahl aller Records steht.
Parametrierung
Die Parameter, die für eine S7-TSPP-Verbindung im S7-Parametrierpanel definiert werden müssen, sind:
Verbindungstyp
Der Verbindungstyp ändert sich automatisch auf "TSPP S7 Verbindung" und kann nicht geändert werden, wenn S7 - TSPP aktiv ist.
IP Adresse
Die IP-Adresse (oder der Host-Name) von der CPU. Um einen bestimmten Port zu verwenden, kann dieser an die IP Adresse angefügt werden, z.B. "192.168.1.13:120". Standardmäßig wird der TCP-Port 102 für den S7 Treiber verwendet.
Rack
Die Racknummer der CPU-Einheit der SPS. Diese ist bei unterschiedlichen SPS-Baugruppen z.B. S7-300 und S7-400 zu beachten.
Für TSPP ist hier die entsprechende Nummer aus der im Engineering Tool (z.B. NetPro oder TIA Portal) angelegten parametrierten Verbindung einzutragen. In diesem Fall der unter "Adressdetails" - "Lokal" und "Rack" definierte Wert (siehe auch Beispiel für TSPP-Parametrierung).
Slot
Die Slotnummer der CPU-Einheit der SPS. Diese ist bei unterschiedlichen SPS-Baugruppen z.B. S7-300 und S7-400 zu beachten.
Für TSPP ist hier die entsprechende Slot-Nummer aus der im Engineering Tool (z.B. NetPro oder TIA Portal) angelegten parametrierten Verbindung einzutragen. In diesem Fall der unter "Adressdetails" - "Lokal" und "Slot" definierte Wert (siehe auch Beispiel für TSPP-Parametrierung).
Verbindungs-Id
Die ID der S7-Verbindung auf WinCC OA S7-Treiberseite. Diese ID ist nur für den lokalen Gebrauch. Es muss nicht mit der ID der entsprechenden Verbindung in der SPS übereinstimmen.
CPId
Die CPId muss auf "Lokale Verbindungsressource", die in der SPS für die S7-Verbindung angegeben wurde, gesetzt werden.
PC-Rack
Der PC-Rack, wie in der SPS definiert. Hier sind die Werte aus der im Engineering Tool (z.B. NetPro oder TIA Portal) angelegten parametrierten Verbindung einzutragen. In diesem Fall der unter "Adressdetails" - "Partner" - "Rack" definierte Wert (siehe auch Beispiel für TSPP-Parametrierung).
PC-Slot
Der Slot vom PC, wie in der SPS definiert. Hier sind die Werte aus der im Engineering Tool (z.B. NetPro oder TIA Portal) angelegten parametrierten Verbindung einzutragen. In diesem Fall der unter "Adressdetails" - "Partner" - "Slot" definierte Wert (siehe auch Beispiel für TSPP-Parametrierung).
PCId
Die PCId muss auf "Abgesetzte Verbindungsressource", die in der SPS für die S7-Verbindung angegeben wurde, gesetzt werden.
Für die Beschreibungen der anderen Parametrierungsparameter siehe Parametrierung des S7-Treibers.
Aktiv
Selektieren Sie die Checkbox um die Verbindung zum Peripheriegerät aktiv oder inaktiv zu setzen. Eine erstellte und konfigurierte Verbindung kann deaktiviert werden. Der Verbindungs-Datenpunkt wird nicht gelöscht und kann jederzeit neu aktiviert werden. Die Status-Anzeige wechselt vom "Verbunden" auf "Nicht aktiv" wenn eine Verbindung deaktiviert ist.
Zustand
Zeigt den Status der Peripherieverbindung. Es gibt vier Möglichkeiten "Nicht verbunden" (Verbindung zu dem Peripheriegerät verloren z.B. SPS wurde vom Netzwerk getrennt), "Verbunden" (mit dem Peripheriegerät verbunden), "Generalabfrage" (Generalabfrage läuft), "Nicht Aktiv" (Gerät mit zugehöriger Checkbox ist auf inaktiv gesetzt).
GA
Die Schaltfläche GA führt eine Generalabfrage für die ausgewählte Verbindung aus. Für spontane Telegramme (TSPP) bedeutet das, dass das Generalabfrage-Bit für die Daten, die als nächstes empfangen werden, gesetzt wird. Die nächsten empfangenen Daten werden an WinCC OA gesendet (ohne Berücksichtigung des Low-Level-Vergleichs und Glättung). Siehe auch Config-Eintrag autoGQ im Kapitel Mögliche Config-Einträge des S7-Treibers). Der S7 Treiber führt automatisch eine Generalabfrage beim Verbindungsaufbau und bei einer Redundanzumschaltung aus.
Beispiel für TSPP-Parametrierung
>In der SPS müssen die parametrierten Verbindungen für jede TSPP-Verbindung definiert werden. Die Verbindungen können mit dem STEP 7 NetPro-Tool oder dem TIA Portal definiert werden. Die nächsten Abbildungen zeigen eine solche Konfiguration in der SPS.
NetPro
TIA Portal
Öffnen Sie das TIA-Projekt, gehen Sie auf Geräte & Verbindungen und wählen Sie die gewünschte SPS aus. Wechseln Sie in der Netzwerksicht auf den Verbindungen-Tab.
Wählen Sie eine Verbindung aus, um die entsprechenden Adressdetails anzuzeigen.
TSPP mit redundanter SPS oder Verbindungen
Das Standardverhalten von TSPP im Zusammenhang mit redundanten SPS oder redundanten Verbindungen ist, dass der Treiber eine der aufgebauten Verbindungen auswählt, um die TSPP-Telegramme für das Mapping auf DPs zu übernehmen. Dies bedeutet, dass alle aufgebauten TSPP-Verbindungen die gleichen TSPP-Telegramme senden müssen. Es ist nicht möglich, dass eine Verbindung falsche oder leere TSPP-Telegramme sendet.
In diesem Modus kann es daher zu einem Verlust von Telegrammen kommen, wenn die "benutzte" Verbindung unterbrochen wird, bis der Treiber eine andere wählt.
Mit dem Config-Eintrag [s7] reduModeTSPP (1 oder 2) kann der Treiber so konfiguriert werden, dass er TSPP-Daten von jeder Verbindung akzeptiert. Dies hat den Vorteil, dass keine Umschaltung erforderlich ist. Damit ist es möglich, dass die SPS leere TSPP-Telegramme zur Alive-Prüfung sendet, aber es ist nicht möglich, dass TSPP-Telegramme mit ungültigen Daten gesendet werden.
Wenn dieser Modus gewählt wird, werden doppelte Werte in WinCC OA gesehen wenn die gleichen TSPP-Telegramme über mehrere Verbindungen gesendet werden.
Dies kann entweder durch Low-Level Alt-Neu-Vergleich gefiltert werden (Modus 1) oder wenn der [s7] reduModeTSPP Wert 2 ist, erfolgt die Filterung bereits auf Basis von TSPP-Telegrammen.
Mit dem Config-Eintrag [s7] LimitedTSPPAliveCheck = " Yes " kann vermieden werden, dass Alive-Fehlermeldungen ausgegeben werden, wenn die SPS nicht auf allen Verbindungen periodische TSPP-Telegramme sendet.