Step 7 Konsistenz bei BSEND/BRCV (FB12/13) bzw. GET (FB14) S7-300 PN/DP

ducati

Level-3
Beiträge
9.757
Reaktionspunkte
2.801
Zuviel Werbung?
-> Hier kostenlos registrieren
würde hier mal eine etwas tiefer gehende Diskussion zum Thema Kosistenz bei Datenaustausch zwischen 2 SPSn anfangen.

Die Informationen von Siemens sind hier mal wieder etwas verwirrend.

Bisher hab ich BSEND/BRCV bzw. GET immer ohne irgendwelche "Konsistenzsicherungskonzepte" verwendet. Also ich Lese/Schreibe mit den Kommunikationsbausteinen immer direkt die DBs welche auch vom OB1 zyklischen Programm gelesen/beschrieben werden.

Jetzt sagt aber Siemens-F1:

beim GET:
Die Daten werden konsistent empfangen, wenn Sie folgendes beachten:
Werten Sie den aktuell benutzten Teil des Empfangsbereichs RD_i vollständig aus, bevor Sie einen erneuten Auftrag aktivieren.

beim BSEND:
m Datenkonsistenz zu gewährleisten, dürfen Sie den aktuell benutzten Teil des Sendebereichs SD_1 erst dann wieder beschreiben, wenn der aktuelle Sendevorgang abgeschlossen ist. Dies ist der Fall, wenn der Zustandsparameter DONE den Wert 1 annimmt.

beim BRCV:
Die Daten werden konsistent empfangen, wenn Sie folgendes beachten: Werten Sie den aktuell benutzten Teil des Empfangsbereichs RD_1 vollständig aus, bevor Sie den Baustein wieder mit dem Wert 1 am Steuereingang EN_R aufrufen.

klar ist auch, dass die Kommunikationsbausteine über mehrere OB1-Zyklen laufen... Also müsste man eigentlich jeweils nochmal in einen zusätzlichen DB per Flanke umkopieren, auf welchen dann die Kommunikationsbausteine exklusive zugreifen.

Nur macht das ja eigentlich jemand so, und auch in den FAQs von Siemens zum BSEND bzw. PUT wird das nicht gemacht. Hat da jemand schon mal nachweislich Konsistenzprobleme dadurch gehabt?

Irgendwo hab ich gelesen, dass DWORD-Blöcke so oder so immer konsistent bleiben? Find das aber nicht mehr, bzw. weiss ich auch den genauen Zusammenhang nicht mehr. Kann das jemand bestätigen?

In der SIMATIC Comm Doku steht folgendes:

Bei S7-300 werden die Daten in Blöcken zu x Byte (siehe Tabelle unten) vom Be-triebssystem konsistent in den STEP 7 Anwenderspeicher kopiert.

Das Kopieren erfolgt im Zykluskontrollpunkt des Betriebssystems. Für größere Da-tenbereiche wird vom System keine Datenkonsistenz garantiert.

Ist eine bestimmte Datenkonsistenz gefordert, so dürfen die Daten im Anwender-programm nicht größer als diese x Byte sein.


Tabelle 7-1
[FONT=Arial,Arial][FONT=Arial,Arial]Fallunterscheidung [/FONT][/FONT][FONT=Arial,Arial][FONT=Arial,Arial][/FONT][/FONT]

[FONT=Arial,Arial][FONT=Arial,Arial]Anzahl konsistenter Daten
[/FONT]
[/FONT]
[FONT=Arial,Arial][FONT=Arial,Arial][/FONT][/FONT]

Kommunikation über integrierte Schnittstelle der CPU

64 Byte bis 240 Byte (*1)

Kommunikation über CP

32 Byte

das ist für mich auch nicht eindeutig: was passiert bei mehr als 32 Byte? Hab ich Konsistenz in 32 Byte Blocken, oder willkürlich oder garnicht?

Gruß.
 
im CPU-Gerätehandbuch hab ich noch folgendes gefunden:

Bei S7-Kommunikationsfunktionen, z. B. PUT/GET bzw. Schreiben/Lesen über
OP-Kommunikation, die keinen Baustein im Anwenderprogramm der CPU (als Server)
erfordern, muss bereits bei der Programmierung die Größe der Datenkonsistenz
berücksichtigt werden. Die PUT/GET-Funktionen der S7-Kommunikation, bzw.
Lesen/Schreiben von Variablen über die OP-Kommunikation werden im Zykluskontrollpunkt
der CPU abgearbeitet. Um eine definierte Prozessalarmreaktionszeit abzusichern, werden
die Kommunikationsvariablen in Blöcken bis maximal 240 Byte im Zykluskontrollpunkt des
Betriebssystems konsistent in/aus den/dem Anwenderspeicher kopiert. Für alle größeren
Datenbereiche wird keine Datenkonsistenz garantiert.

in den Technischen Daten zur 317-2 PN/DP steht dann:

S7-Basiskommunikation


unterstützt Ja


Nutzdaten pro Auftrag, max. 76 Byte


Nutzdaten pro Auftrag, davon konsistent,
max.
76 Byte (bei X-SEND/REC);
64 Byte (bei X-PUT/GET als Server)

alles etwas unkonkret (Gibt's Unterschiede zwischen GET und X-GET?)

Konkret, kann es passieren, das mir nen REAL-Wert inkonistent übertragen wird, evtl. wenn er auch um 2 BYTE verschoben im DB abgelegt ist?

Gruß.
 
Zurück
Oben