|
Anleitung Für die Kommunikation über eine der folgenden Kommunikationsverbindungen müssen im S7-Programm der S7-400 die Kommunikationsbausteine FC50 "AG_LSEND" und FC60 "AG_LRECV" aufgerufen werden.
- TCP-Verbindung
- ISO-on-TCP-Verbindung (RFC 1006)
- ISO-Transportverbindung
- UDP-Verbindung
- FDL-Verbindung
Merkmale der Kommunikationsbausteine FC50 "AG_LSEND" und FC60 "AG_LRECV"
- FC50 und FC60 sind asynchrone Kommunikationsfunktionen.
- FC50 und FC60 laufen über mehrere OB1-Zyklen.
- FC50 wird mit dem Eingangsparameter "ACT" aktiviert.
- Das Auftragsende wird über "DONE" bzw. "ERROR" angezeigt.
- AG_LSEND und AG_LRECV können gleichzeitig über eine Verbindung kommunizieren.
- Die aktuelle Version der Kommunikationsbausteine FC50 "AG_LSEND" und FC60 "AG_LRCV" finden Sie in der SIMATIC_NET_CP Bibliothek unter "CP 400 > Bausteine".
Beschreibung des Programmbeispiels Das S7-Program beinhaltet den Aufruf der Kommunikationsbausteine FC50 "AG_LSEND" und FC60 "AG_LRECV" aus der SIMATIC_NET_CP Bibliothek. Der FC50 "AG_LSEND" dient zum Senden von Daten an eine S7-Station bzw. S5-Station, an eine PC-Station oder an ein Fremdsystem. Der FC60 "AG_LRECV" dient zum Empfang der Daten einer S7-Station bzw. S5-Station, einer PC-Station oder eines Fremdsystems.
Das Programmbeispiel zeigt die Funktionsweise der Kommunikationsbausteine FC50 "AG_LSEND" und FC60 "AG_LRCV" anhand einer ISO-on-TCP Verbindung.
Erstellen Sie zunächst die Hardware-Konfiguration ihrer S7-400 Station.
Hinweis Konfigurieren Sie das Merkerbyte 10 als Taktmerker. Über diesen Taktmerker wird der Sendeauftrag angestoßen. Speichern und übersetzen Sie die Hardware-Konfiguration Ihrer S7-400 Station und laden Sie diese in die CPU.
In diesem Programmbeispiel wird die Timer-Ressource T10 benutzt.
Konfigurieren Sie in NetPro eine der o. g. Kommunikationsverbindungen für die CPU. Wenn die Kommunikationspartner zusammen in einem STEP 7-Projekt konfiguriert sind, dann können Sie eine spezifizierte Kommunikationsverbindung projektieren. Wenn der Kommunikationspartner nicht im selben STEP 7-Projekt wie die S7-400 Station konfiguriert ist, dann wird eine unspezifizierte Kommunikationsverbindung konfiguriert. Achten Sie bei der Konfiguration der Kommunikationsverbindung auf die korrekte Vergabe von IP-Adresse bzw. PROFIBUS-Adresse. Des Weiteren ist auf die korrekte Vergabe von PORT, TSAP bzw. LSAP zu achten. Diese dienen zur eindeutigen Identifizierung der Kommunikationsverbindung zwischen den Kommunikationspartnern.
Im Eigenschaftsdialog der Kommunikationsverbindung -> Register "Allgemein" finden Sie den Wert, der für die Eingangsparameter "ID" und "LADDR" der Kommunikationsbausteine FC50 "AG_LSEND" und FC60 "AG_LRECV" angegeben werden muss.

Bild 01
Das STEP 7-Programm besteht aus den Bausteinen OB100, OB1, FB200, DB200, DB201, FC50 und FC60.
OB100 Der OB100 ist ein Anlauf-OB und wird beim Neustart (Warmstart) der CPU durchlaufen. In diesem OB wird mit Merker 1.0 die Freigabe für den ersten Kommunikationsanstoß erteilt.
OB1 Der OB1 wird zyklisch aufgerufen. In diesem OB befindet sich der Aufruf des FB200 (Instanz-Datenbaustein: DB200) mit M1.0 als Parameter (INIT_COM). Nachdem der FB200 durchlaufen wurde, wird M1.0 zurückgesetzt.

Bild 02
FB200 Der FB200 wird im OB1-Zyklus aufgerufen. In diesem FB finden Sie den Aufruf von FC50 "AG_LSEND" und FC60 "AG_LRECV". Der Sendeauftrag wird über eine positive Flanke am Eingangsparameter "ACT" des FC50 angestoßen. Der Anstoß des Sendeauftrags wird mit dem Taktmerker M10.7 und der Variable "SND_BUSY" gesteuert. Wenn der Sendeauftrag läuft ist "SND_BUSY" gesetzt. Somit ist kein Anstoß eines neuen Sendeauftrags möglich.
Der Anstoß des Empfangsauftrag wird mit der Variable "RCV_DISABLE" gesteuert. Der Wert dieser Variable=FALSE, so dass der FC50 "AG_LRCV" immer empfangsbereit ist und jederzeit Daten empfangen werden können.
Diese Verriegelung der Funktion ist besonders wichtig, da die Funktion asynchron ist und mehrere Zyklen andauern kann. Ein ständiges Anstoßen neuer Sendeaufträge ohne abzuwarten, dass diese erfolgreich oder mit Fehler beendet wurden, kann eine Kommunikationsüberlast erzeugen.
Die Werte für die Eingangsparameter "ID" und "LADDR" müssen aus dem Eigenschaftsdialog der Kommunikationsverbindung in NetPro übernommen werden (siehe Bild 01).
Am Eingangsparameter "SEND" des FC50 wird die Adresse und Länge des Datenbereiches angegeben, welcher die zu sendenden Daten enthält (Sendepuffer), zum Beispiel: P#DB201.DBX0.0 BYTE 100.
Am Eingangsparameter "LEN" wird die Länge der zu sendenden Daten in Bytes eingetragen. In diesem Beispiel wird die Länge der zu sendenden Daten mit 100 Bytes definiert. Die Ausgangsparameter "DONE", "ERROR" und "STATUS" werden für die Auftragsauswertung benötigt und sind nur im gleichen Zyklus gültig!

Bild 03

Bild 04
Wenn der Sendauftrag erfolgreich abgeschlossen ist, dann wird "SND_BUSY" zurückgesetzt. Somit kann ein neuer Sendeauftrag angestoßen werden.

Bild 05
Wenn der Sendeauftrag mit Fehler abgeschlossen ist, dann wird "SND_BUSY" ebenfalls zurückgesetzt und der Wert des Ausgangsparameters "STATUS" des FC50 wird für eine Fehleranalyse gesichert.
Ist der Wert des Ausgangsparameters "STATUS" 0x7000Hex (28672Dez), dann wird die Funktion FC50 "AG_LSEND" erneut aufgerufen.

Bild 06
Ist der Wert des Ausgangsparameters "STATUS" 0x8183Hex (32381Dez) oder 0x8304Hex (31996Dez), d.h. die Kommunikationsverbindung ist nicht aufgebaut, dann wird nur alle 10s ein Sendeauftrag initiiert.

Bild 07
Die Werte für die Eingangsparameter "ID" und "LADDR" müssen aus dem Eigenschaftsdialog der Kommunikationsverbindung in NetPro übernommen werden (siehe Bild 01). Bei Eingangsparameter "RECV" des FC60 wird die Adresse und Länge des Datenbereiches angegeben, wo die empfangenen Daten gespeichert werden (Empfangspuffer), zum Beispiel: P#DB201.DBX100.0 BYTE 100.

Bild 08
Der Ausgangsparameter "NDR" dient als Anzeige dafür, dass neue Daten empfangen wurden. Der Ausgangsparameter "LEN" gibt die Länge der empfangenen Daten an.
Wenn die Daten nicht erfolgreich empfangen werden, dann wird der Wert des Ausgangsparameters "STATUS" gesichert und ausgewertet.

Bild 09
Ist der Wert des Ausgangsparameters "STATUS" 0x8183Hex (32381Dez) oder 0x8304Hex (31996Dez), d.h. die Kommunikationsverbindung ist nicht aufgebaut, dann wird die Variable "RCV_DISABLE" für 10s gesetzt. In dieser Zeit werden keine Daten empfangen. Erst nach Ablauf dieser Zeit (10s) können wieder neue Daten empfangen werden.

Bild 10
Die Länge der erfolgreich empfangenen Daten wird in einer statischen Variablen gespeichert.

Bild 11
Im FB200 wird ausgewertet wie oft die entsprechenden STATUS-Werte am FC50 "AG_LSEND" und FC60 "AG_LRCV" auftreten. Diese Information wird in den statischen Schnittstellenparametern des FB200 in der Variable "STATISTIC" vom Datentyp "Struktur" gespeichert.

Bild 12
Über die Variable "#STATISTIC.ON_OFF" ist es möglich die STATUS-Auswertung ein- bzw. auszuschalten. Die STATUS-Auswertung ist standardmäßig eingeschalten.

Bild 13
Sonderfall Wenn der Datenaustausch über eine TCP-Verbindung erfolgt, dann wird der Ausgangsparameter "NDR" erst gesetzt, wenn der komplette Empfangspuffer gefüllt worden ist! Der Wert des Ausgangsparameters "LEN" zeigt somit immer die gesamte Länge des Empfangspuffers!
Das STEP 7 Projekt als Download Das STEP 7-Projekt enthält ein Programmbeispiel für den Aufruf der Funktion FC50 und FC60 mit Statusauswertung. Es wurde mit STEP 7 V5.5 SP2 erstellt.
NET_S7400_LSEND_LRECV.zip ( 195 KB )
Hinweis Kopieren Sie die aktuelle Version der Kommunikationsbausteine FC50 und FC60 aus der SIMATIC_NET_CP Bibliothek bzw. aus der Standard Library in Ihr Anwenderprogramm und rufen Sie diese in Ihrem Anwenderprogramm auf.
Ergänzende Suchbegriffe
send, receive
|