×
Siemens Industry Online Support
Siemens AG
Beitragstyp: FAQ Beitrags-ID: 109479564, Beitragsdatum: 29.10.2015
(6)
Bewerten

Wie verhalten sich die Anweisungen TSEND_C und TRCV_C in der S7-1500?

  • Beitrag
  • Betrifft Produkt(e)
Die Anweisungen "TSEND_C" und "TRCV_C" richten TCP, ISO-on-TCP oder UDP-Verbindungen ein und bauen diese auf. Nach dem Einrichten und Aufbauen der Verbindung wird diese automatisch von der CPU gehalten und überwacht.

Die Anweisungen werden asynchron ausgeführt und haben folgende Funktionen:

  • Eine Kommunikationsverbindung einrichten und aufbauen.
  • Daten über die bestehende Kommunikationsverbindung senden bzw. empfangen.
  • Die Kommunikationsverbindung abbauen oder zurücksetzen.

Die Kommunikationsverbindung wird mit CONT=1 eingerichtet und aufgebaut.

Der Sendeauftrag wird ausgeführt, wenn am Parameter REQ eine steigende Flanke erfasst wird.

Wenn der Parameter EN_R auf den Wert "1" gesetzt wird, wird der Datenempfang aktiviert.

Im Folgenden wird das Verhalten der Anweisungen bei einer programmierten Verbindung betrachtet. Dabei werden die Parameter CONT/REQ bzw. CONT/NDR verwendet.

Gültigkeit
Dieser Beitrag gilt für die Anweisungen mit Version V2.0. Die ältere Version V1.4 finden Sie im Anhang. Als Kommunikationspartner wurde ein CP443-1 verwendet, der so oft wie möglich Daten versendet hat (bei "TRCV_C" relevant).

TSEND_C
Solange der Parameter CONT nicht gesetzt wird, hat der Parameter REQ keine Auswirkung.

Parameter CONT und REQ werden nacheinander gesetzt
Die Anweisung TSEND_C liefert solange den STATUS "7000", bis CONT= 1 gesetzt und der Verbindungsaufbau gestartet wird. Beim Verbindungsaufbau hat der Parameter STATUS für einen Zyklus den Wert "7001". Anschließend hat der Parameter STATUS solange den Wert "7002", bis die Verbindung aufgebaut ist. Wenn die Verbindung aufgebaut ist, hat der Parameter STATUS den Wert "7004". Wenn der Parameter REQ=1 gesetzt wird, hat der Parameter "STATUS" den Wert "7005" und die Anweisung meldet BUSY=1 solange, bis der Sendeauftrag abgeschlossen ist. Das erfolgreiche Senden der Daten wird mit STATUS=0, DONE=1 und BUSY=0 gemeldet. Anschließend wechselt der Parameter STATUS wieder auf den Wert "7004", d. h. die Anweisung TSEND_C ist nicht mehr im Sendebetrieb. Für ein erneutes Senden muss der Parameter REQ für einen Zyklus zurückgesetzt und anschließend wieder gesetzt werden.
 


Bild 1

Parameter CONT und REQ werden zeitgleich gesetzt
Die Anweisung "TSEND_C" liefert solange den STATUS "7000", bis CONT=1 und REQ=1 gesetzt werden und der Verbindungsaufbau gestartet wird. Beim Verbindungsaufbau hat der Parameter STATUS für einen Zyklus den Wert "7001". Anschließend hat der Parameter STATUS solange den Wert "7002", bis die Verbindung aufgebaut ist. Wenn die Verbindung erfolgreich aufgebaut ist, hat der Parameter STATUS den Wert "1" und die Anweisung sendet Daten, so dass BUSY=1 gesetzt. Die weiteren Zyklen hat der Parameter STATUS den Wert "7005" und BUSY=1, bis der Sendeauftrag abgeschlossen ist. Das erfolgreiche Senden der Daten wird mit STATUS=0, DONE=1 und BUSY=0 gemeldet. Die Anweisung hat am Parameter STATUS wieder den Wert 7004, d. h. sie ist nicht mehr im Sendebetrieb gemeldet. Die Anweisung hat am Parameter STATUS wieder den Wert 7004, d. h. sie ist nicht mehr im Sendebetrieb. Für ein erneutes Senden muss der Parameter REQ für einen Zyklus zurückgesetzt und anschließend wieder gesetzt werden.
 


Bild 2

Bild 5 zeigt den Verbindungsabbau. Beim Verbindungsabbau gibt die Anweisung TSEND_C am Parameter STATUS den Wert "7003" aus, bis die Verbindung erfolgreich abgebaut wurde. Der erfolgreiche Verbindungsabbau wird mit dem Wert "3" am Parameter STATUS gemeldet. Anschließend gibt die Anweisung TSEND_C am Parameter STATUS den Wert "7000" aus, d. h. es läuft kein Auftrag.

TRCV_C
Solange der Parameter CONT nicht gesetzt wird, hat der Parameter EN_R keine Auswirkung.

Parameter CONT und EN_R werden nacheinander gesetzt
Die Anweisung TRCV_C liefert solange den STATUS "7000", bis CONT= 1 gesetzt und der Verbindungsaufbau gestartet wird. Beim Verbindungsaufbau hat der Parameter STATUS für einen Zyklus den Wert "7001". Anschließend hat der Parameter STATUS solange den Wert "7002", bis die Verbindung aufgebaut ist. Wenn die Verbindung aufgebaut ist, hat der Parameter STATUS den Wert "7004". Wenn der Parameter EN_R=1 gesetzt wird, hat der Parameter "STATUS" den Wert "7006" und die Anweisung meldet BUSY=1 solange, bis der Empfangsauftrag abgeschlossen ist. Der erfolgreiche Empfang der Daten wird mit STATUS=0, NDR=1 und BUSY=0 gemeldet. Solange EN_R=1 ist, gibt die Anweisung am Parameter STATUS wieder den Wert "7006" aus, d. h. sie ist weiter empfangsbereit und meldet BUSY=1. Im folgenden Beispiel wird noch ein zweites Telegramm empfangen.
 


Bild 3

Parameter CONT und EN_R werden zeitgleich gesetzt
Die Anweisung "TRCV_C" liefert solange den STATUS "7000", bis CONT=1 und EN_R=1 gesetzt werden und der Verbindungsaufbau gestartet wird. Beim Verbindungsaufbau hat der Parameter STATUS für einen Zyklus den Wert "7001". Anschließend hat der Parameter STATUS solange den Wert "7002", bis die Verbindung aufgebaut ist. Wenn die Verbindung erfolgreich aufgebaut ist, hat der Parameter STATUS den Wert "1" und die Anweisung ist empfangsbereit, so dass BUSY=1 gesetzt. Die weiteren Zyklen hat der Parameter STATUS den Wert "7006" und BUSY=1, bis der Empfangsauftrag abgeschlossen ist. Der erfolgreiche Empfang wird mit STATUS=0, NDR=1 und BUSY=0 gemeldet. Solange EN_R=1 ist, gibt die Anweisung am Parameter STATUS wieder den Wert "7006" aus, d. h. sie weiter empfangsbereit und meldet BUSY=1. Im folgenden Beispiel wird noch ein zweites Telegramm empfangen.
 


Bild 4

Besonderheit bei TRCV
Wenn der Parameter EN_R zurückgesetzt wird, bleibt die Anweisung TRCV_C noch solange empfangsbereit, bis noch einmal Daten empfangen wurden. Die Anweisung gibt am Parameter STATUS den Wert "7006" aus und BUSY=1, bis die Daten erfolgreich empfangen wurden. Der erfolgreiche Empfang wird mit STATUS=0, NDR=1 und BUSY=0 gemeldet. Anschließend gibt die Anweisung am Parameter STATUS den Wert "7004" aus und BUSY=0.

Wenn der Parameter CONT zurückgesetzt wird, baut die Anweisung die Verbindung ab. Beim Verbindungsabbau gibt die Anweisung TRCV_C am Parameter STATUS den Wert "7003" aus, bis die Verbindung erfolgreich abgebaut wurde. Der erfolgreiche Verbindungsabbau wird mit dem Wert "3" am Parameter STATUS gemeldet. Anschließend gibt die Anweisung TRCV_C am Parameter STATUS den Wert "7000" aus, d. h. es läuft kein Auftrag.
 


Bild 5

Verwendung von TSEND_C und TRCV_C auf einer Verbindung
Wenn die Anweisung TSEND_C und TRCV_C mit der gleichen Verbindungs-ID angewendet werden, sind zwei Anweisungen mit Steuerfunktionen (Verbindungsaufbau und -abbau) auf einer Verbindung aktiv. Dies kann bei falscher Verwendung zu Fehlern führen (siehe Bild 6).

Die Werte am Parameter STATUS der Anweisungen unterscheiden sich von den Werten im Einzelbetrieb der Anweisungen. Da TSEND_C vor TRCV_C aufgerufen wird, werden die Werte am Parameter STATUS der Anweisung TRCV_C beeinflusst. Die Anweisung TRCV_C meldet im Verbindungsaufbau nicht den STATUS "7001" als Zwischenstatus. Außerdem meldet die Anweisung TSEND_C den Verbindungsaufbau mit "7004" schon vor der Anweisung TRCV_C. Diese meldet noch einen Zyklus "7002". Erst im Folgezyklus meldet die Anweisung TRCV_C STATUS "1" für einen erfolgreichen Verbindungsaufbau.

Wird der Parameter CONT am TSEND_C oder TRCV_C zurückgesetzt, wird die Verbindung abgebaut, auch wenn an der anderen Anweisung der Parameter CONT gesetzt ist. Während die Anweisung TSEND_C am Parameter STATUS den Wert "7003" für den laufenden Verbindungssabbau ausgibt, gibt die Anweisung TRCV_C am Parameter STATUS noch den Wert "7004" aus. Wenn die Verbindung abgebaut ist, liefert TRCV einen Fehler mit dem STATUS 80AA. Anschließend versucht TRCV_C, die Verbindung wieder aufzubauen.
 


Bild 6

Es wird empfohlen, folgende Kombinationen zum Senden und Empfangen von Daten auf einer Verbindung zu verwenden:

  • TSEND_C und TRCV
  • TSEND und TRCV_C

Erstellumgebung
Die Grafiken basieren auf dem Verhalten der Anweisungen TSEND_C und TRCV_C mit Version V2.0. Getestet wurde das Verhalten mit einer CPU1516-3 PN/DP und einem CP1543-1. Für die Protokolle ISO-on-TCP, TCP und UDP war das Verhalten jeweils gleich.

Weiterführende Informationen
Das Verhalten der Anweisungen TSEND_C und TRCV_C V1.4 ist in folgendem Dokument beschrieben.

 Verhalten_TSENDC_TRCVC_de.pdf (943,4 KB)

Securityhinweise
Um technische Infrastruktur, Systeme, Maschinen und Netzwerke gegen Cyber-Bedrohungen zu sichern, ist es erforderlich, ein ganzheitliches IT Security-Konzept zu implementieren (und kontinuierlich aufrechtzuerhalten), das dem aktuellen Stand der Technik entspricht. Die Produkte und Lösungen von Siemens formen nur einen Bestandteil eines solchen Konzepts. Weitergehende Informationen über Cyber Security finden Sie unter
https://www.siemens.com/cybersecurity#Ouraspiration.