- Beiträge
- 11.128
- Reaktionspunkte
- 3.749
-> 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:
beim BSEND:
beim BRCV:
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:
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ß.
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.
[TABLE="width: 605"]
[TR]
[TD="width: 50%"]
Tabelle 7-1
[FONT=Arial,Arial][FONT=Arial,Arial]Fallunterscheidung [/FONT][/FONT][FONT=Arial,Arial][FONT=Arial,Arial][/FONT][/FONT]
[/TD]
[TD="width: 50%"]
[FONT=Arial,Arial][FONT=Arial,Arial]Anzahl konsistenter Daten
[/FONT][/FONT][FONT=Arial,Arial][FONT=Arial,Arial][/FONT][/FONT][/TD]
[/TR]
[TR]
[TD="width: 50%"]
Kommunikation über integrierte Schnittstelle der CPU
[/TD]
[TD="width: 50%"]
64 Byte bis 240 Byte (*1)
[/TD]
[/TR]
[TR]
[TD="width: 50%"]
Kommunikation über CP
[/TD]
[TD="width: 50%"]
32 Byte
[/TD]
[/TR]
[/TABLE]
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ß.