Herunterladen Diese Seite drucken

B&R X20 System Anwenderhandbuch Seite 263

Vorschau ausblenden Andere Handbücher für X20 System:

Werbung

12.10.5.3 Senden und Empfangen mit Forward
Der grundsätzliche Algorithmus zum Senden bzw. Empfangen von Daten bleibt gleich. Durch den Forward
können bis zu 7 unbestätigte Sequenzen abgesetzt werden. Sequenzen können gesendet werden, ohne die
Bestätigung der vorangegangenen Nachricht abzuwarten. Da die Wartezeit zwischen Schreiben und Rück-
meldung entfällt, können im gleichen Zeitraum erheblich mehr Daten übertragen werden.
Algorithmus zum Senden
Zyklische Statusabfrage:
- Modul überwacht OutputSequenceCounter
0) Zyklische Prüfungen:
- Steuerung muss OutputSyncAck prüfen
→ falls OutputSyncAck = 0; OutputSyncBit zurücksetzen und Kanal resynchronisieren
- Steuerung muss Freigabe der OutputMTU prüfen
→ falls OutputSequenceCounter > OutputSequenceAck + 7, in diesem Fall nicht freigegeben, weil letzte Sequenz noch nicht quittiert
1) Vorbereitung (Sendearray anlegen):
- Steuerung muss Nachricht auf zulässige Segmente aufteilen und entsprechende Controlbytes bilden
- Steuerung muss Segmente und Controlbytes zu Sendearray zusammenfügen
2) Senden:
- Steuerung muss aktuellen Teil des Sendearrays in die OutputMTU übertragen
- Steuerung muss OutputSequenceCounter erhöhen, damit Sequenz vom Modul übernommen wird
- Steuerung darf im nächsten Buszyklus erneut senden, falls MTU freigegeben ist
Reaktion des Moduls, weil OutputSequenceCounter > OutputSequenceAck:
- Modul übernimmt Daten aus internem Empfangspuffer und fügt sie am Ende des internen Empfangsarrays an
- Modul quittiert; aktuell empfangener Wert des OutputSequenceCounters auf OutputSequenceAck übertragen
- Modul fragt Status wieder zyklisch ab
3) Abschluss (Bestätigung):
- Steuerung muss OutputSequenceAck zyklisch überprüfen
→ Eine Sequenz gilt erst dann als erfolgreich übertragen, wenn sie über das OutputSequenceAck bestätigt wurde. Um Übertragungsfehler auch bei
der letzten Sequenz zu erkennen, muss sichergestellt werden, dass der Algorithmus lange genug durchlaufen wird.
Hinweis:
Für eine exakte Überwachung der Kommunikationszeiten sollten die Taskzyklen gezählt werden, die seit der letzten Erhöhung des OutputSequence-
Counters vergangen sind. Auf diese Weise kann die Anzahl der Buszyklen abgeschätzt werden, die bislang zur Übertragung benötigt wurden. Über-
steigt der Überwachungszähler eine vorgegebene Schwelle, kann die Sequenz als verloren betrachtet werden (das Verhältnis von Bus- und Taskzyklus
kann vom Anwender beeinflusst werden, sodass der Schwellwert individuell zu ermitteln ist).
Algorithmus zum Empfangen
0) Zyklische Statusabfrage:
- Steuerung muss InputSequenceCounter überwachen
Zyklische Prüfungen:
- Modul prüft InputSyncAck
- Modul prüft InputMTU auf Freigabe
→ Freigabekriterium: InputSequenceCounter > InputSequenceAck + Forward
Vorbereitung:
- Modul bildet Controlbytes/Segmente und legt Sendearray an
Aktion:
- Modul überträgt aktuellen Teil des Sendearrays in den Empfangspuffer
- Modul erhöht InputSequenceCounter
- Modul wartet auf neuen Buszyklus, nachdem Zeit aus ForwardDelay abgelaufen ist
- Modul wiederholt Aktion, falls InputMTU freigegeben ist
1) Empfangen (InputSequenceCounter > InputSequenceAck):
- Steuerung muss Daten aus InputMTU übernehmen und an das Ende des Empfangsarrays anfügen
- Steuerung muss InputSequenceAck an InputSequenceCounter der aktuell verarbeiteten Sequenz angleichen
Abschluss:
- Modul überwacht InputSequenceAck
→ Eine Sequenz gilt erst dann als erfolgreich übertragen, wenn sie über das InputSequenceAck bestätigt wurde.
X20 System Anwenderhandbuch 4.30
Zusätzliche Informationen
263

Werbung

loading