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