3964R
# 3964R

Das 3964/3964R-Protokoll ist ein serielles Punkt-zu-Punkt-Protokoll zur Kommunikation zwischen zwei speicherprogrammierbaren Steuerungen (SPS). Es ist ein Master/Master-Protokoll. Das heißt, bei diesem Protokoll kann eine SPS die Speicherstellen (Datenwörter) der Partner-SPS direkt und ohne nachzufragen manipulieren. Bei einem Konflikt regelt ein Prioritäts-Parameter den Vorrang.

Im OSI-Modell ist 3964(R) in der 2. Schicht, der Sicherungsschicht (Link Layer) anzusiedeln. Darunter (auf Schicht 1) sind serielle Schnittstellen wie RS232 und TTY zu finden, während darüber häufig das RK512-Protokoll eingesetzt wird.

Die Daten werden im Vollduplexmodus, also in beide Richtungen gleichzeitig übertragen.

## Typen

Die 3964-Variante unterscheidet sich vom 3964R-Protokoll nur durch das Fehlen des Cyclic Redundancy Check (CRC), das eine zuverlässigere Übertragung ermöglicht.

## Protokollablauf

Eine ordnungsgemäße Übertragung sieht folgendermaßen aus:

| Sender | | Empfänger |
| - | - | - |
| STX (0x02) | → | |
| | ← | DLE (0x10) |
| Daten | → | |
| Daten | → | |
| DLE (0x10) | → | |
| ETX (0x03) | → | |
| (BCC) | → | | Nur bei 3964R |
| | ← | DLE (0x10) |

Im Datenbereich ist dabei jedes zu übertragende DLE-Zeichen (0x10 hex) zu verdoppeln, um es vom DLE am Ende des Datenbereichs zu unterscheiden. BCC ist die Prüfsumme des 3964R Protokolls, sie existiert bei 3964 nicht. Die Prüfsumme entspricht dabei der geraden Längsparität aller übertragenen Datenbytes, also deren XOR-Verknüpfung.

## Übertragungsfehler

Mehrere Fehlersituationen sind möglich:

* Der Empfänger antwortet auf STX mit NAK (oder jedem anderen Zeichen als DLE oder STX). Dann muss der Sendeversuch später wiederholt werden, da der Empfänger nicht bereit ist.
* Der Empfänger antwortet auf STX mit STX, will also selbst senden. Einer der beiden Partner muss nachgeben und seinen eigenen Sendewunsch zurückstellen. Er sendet DLE und zeigt damit seine Empfangsbereitschaft an.
* Der Empfänger antwortet auf DLE ETX mit NAK (oder jedem anderen Zeichen als DLE). Dann muss der Sendeversuch wiederholt werden, da ein Prüfsummenfehler aufgetreten ist.
* Der Empfänger antwortet innerhalb der Quittungsverzugszeit nicht. Dann ist (nach eventuellen weiteren erfolglosen Versuchen) von einer Störung des Empfängers auszugehen.

## Quellen

Serielle Ein-/Ausgabebaugruppe CP 523 Kapitel 7.1.1: Protokolle 3964 und 3964R

