RK512
# RK512

Das RK512-Protokoll dient zum Zugriff auf interne Speicherbereiche einer Siemens-SPS der Reihe S5.

Im OSI-Modell ist RK512 auf Schicht 4, der Transportschicht anzusiedeln (da einzelne Bereiche des Zielsystems adressiert werden). Unter RK512 läuft zumeist das 3964R-Protokoll (auf Schicht 2). Die Vermittlungsschicht (Layer 3) entfällt dabei, da es sich um eine Punkt-zu-Punkt-Kommunikation handelt und somit kein Zielsystem adressiert werden muss.

## Protokollablauf

Eine RK512-Transaktion besteht aus einem Befehlstelegramm und einem Reaktionstelegramm. Der Initiator der Transaktion steuert dabei die Datenübertragung zum oder vom Partnersystem. Dabei wird zwischen zwei Auftragsarten unterschieden: SEND (Datenübertragung zum Partnersystem) und FETCH (Anfrage an Partner und Datenübertragung zum Initiator).

## Telegrammaufbau

Ein SEND-Befehl und eine FETCH-Reaktion bestehen aus einem Telegrammkopf und folgenden Daten, während SEND-Reaktionen und FETCH-Befehle nur einen Telegrammkopf (ohne Daten) besitzen. Dabei unterscheidet sich der Telegrammkopf zwischen Befehl und Reaktion.

### Befehls-Telegrammkopf

Der Telegrammkopf eines Befehlstelegramms besteht aus 10 Bytes:

| Byte | Bedeutung |
| - | - |
| 1–2 | Telegrammkennung |
| 3 | Auftragsart |
| 4 | Datenbereich |
| 5–6 | Datenziel bzw. -quelle |
| 7–8 | Länge der Daten |
| 9 | Koordinierungsmerker |
| 10 | Koordinierungsmerkerbit (Bit 0–3) und CPU-Nummer (Bits 4–7) |
| (11-?) | (Daten beim SEND-Auftrag) |

Dabei bedeuten:

* Telegrammkennung
   * 0x00 0x00: Starttelegramm
   * 0xFF 0x00: (hex) Folgetelegramm, wenn mehr als 128 Bytes Daten übertragen werden
* Auftragsart
   * 'A': SEND-Auftrag in Datenbaustein als Ziel
   * 'O': SEND-Auftrag in erweiterten Datenbaustein als Ziel
   * 'E': FETCH-Auftrag
* Datenbereich
   * 'D': Datenbaustein
   * 'X': erweiterter Datenbaustein
   * 'E': Eingangsbytes
   * 'A': Ausgangsbytes
   * 'M': Merkerbytes
   * 'P': Peripheriebytes
   * 'Z': Zähler
   * 'T': Timer
   * 'S': Absolute Speicheradressen
   * 'B': (Betriebs-)Systemadressen
* Datenziel/-quelle
   * Bausteinnummer (Byte 5) und Offset (Byte 6)
   * Byte-, Zähler- oder Timernummer
   * Speicheradresse (in Big-Endian-Byte-Reihenfolge)
* Datenlänge
   * Anzahl zu übertragender Bytes (Eingänge, Ausgänge, Merker, Peripherie) oder Worte
   * in Big-Endian-Byte-Reihenfolge
* Koordinierungsmerker
   * zeigt erfolgreiche Abarbeitung des Befehls an
   * Angabe als Merkerbyte (Byte 9) und Bit in diesem Byte (Byte 10, Bits 0–3)
   * Kein Koordinierungsmerker wird als Merker 255, Bit 15 dargestellt
* CPU-Nummer
   * Nummer der CPU, auf die Zugegriffen wird
   * Keine Angabe (Alle CPUs) wird dargestellt als 0 (wenn Koordinierungsmerker vorhanden) oder 0xF (ohne Koordinierungsmerker)

### Reaktions-Telegrammkopf

Der Telegrammkopf eines Reaktionstelegramms besteht aus 4 Bytes:

| Byte | Bedeutung |
| - | - |
| 1–2 | Telegrammkennung |
| 3 | Auftragsart |
| 4 | Status |
| (5-?) | (Daten beim FETCH-Auftrag) |

Dabei bedeuten:

* Telegrammkennung (Analog zum Befehl)
   * 0x00 0x00: Starttelegramm
   * 0xFF 0x00: (hex) Folgetelegramm, wenn mehr als 128 Bytes Daten übertragen werden
* Auftragsart
   * 0x00: Antworttelegramm
* Status
   * 0x00: Bearbeitung erfolgreich
   * > 0x00: Fehlernummer

## Quellen

SIMATIC S5 CP 544 Handbuch Kapitel 3.6: Protokolldefinition der Rechnerkopplung RK512

