Oje, eine S5 ...
Für welches Museum willst du die denn aktivieren? Jeder Arduino ist heute der Kiste doch haushoch überlegen.
In den 80-er Jahren hatte ich für die Dinger mal Treiber geschrieben (PDP/RSX11M und VAX/VMS). Obwohl ich damals in Produktion 20mA Schnittstelle bevorzugt habe, wurde im Test auch V24 verwendet. Als Stecker wirklich den 25-poligen V24-SUB-D Stecker nutzen. Lötbrücken im Stecker (RTS/CTS und DSR/DTR Brücken) möglichst vermeiden, sonst passiert das, was du festgestellt hast (Neustart des S5 Kommunikationseinheit). Eine Soft-Synchronisation (Ctrl-S/Ctrl-Q) geht gar nicht! Daher wirst du mit neueren USB/V24 Umsetzern kein Glück haben. Du brauchst schon eine "richtige" V24 Schnittstelle (keine 3 Draht Strecke).
Sonst musst du die S5 mit den Bauchgruppen penibel konfiguriert haben. Beispiel: Der Einsatz der Grund- und Erweiterungsbaugruppe der AS512 darf am SIMATIC Zentralgerät nur auf dem Steckplatz 127 mit 137 erfolgen. In einem Zentralerweiterungsgerät dürfen nur die Steckplätze 77 mit 87, 97 mit 107 und 117 mit 127 verwendet werden.
Kommunikation mit 1 Start-Bit, 8 Daten-Bits (bei 3964/7 nur 7 Daten-Bits), Parity-Bit auf "EVEN-Parity", 1 Stop-Bit sind einzustellen. Die Datenübertragungsgeschwindigkeit über den Decodierschalter würde ich auf 2400 Baud (Stellung 2) einstellen. 9600 Baud ist in der Regel zu schnell, wenn du keine ordentliche V24 Hardware hast.
Die Kommunikation erfolgt im Protokoll mit folgendem Blockaufbau: STX, Telegramm-Header, Telegramm-Daten, DLE, ETX, BCC (BCC nur bei 3964R). Das Jumpern der Lötbrücken zum Einstellen der Priorität ist nur relevant, wenn Initialisierungs-Konflikte im Protokoll auftreten (für den Test relativ egal).
Für die Kommunikation muss das DUST3964(R) Protokoll eingehalten werden. Zum Aufbau der Verbindung sendet der aktive Partner das Zeichen STX aus. Antwortet die Gegenstelle vor Ablauf der Quittungsverzugszeit (QVZ) von 550 ms mit dem Zeichen DLE, so geht der Treiber in Sendebetrieb über. Antwortet die Gegenstelle mit NAK, einem beliebigen anderen Zeichen (außer DLE), einem gestörten Zeichen oder die QVZ verstreicht ohne Reaktion, so ist der Verbindungsaufbau
gescheitert. Nach insgesamt drei vergeblichen Versuchen bricht der Treiber das Verfahren ab und geht in die Grundstellung.
Gelingt der Verbindungsaufbau, so werden nun die im Ausgabepuffer des aktiven Partners enthaltenen Zeichen mit der gewählten Datenübertragungsgeschwindigkeit an den passiven Partner gesendet. Der passive Partner erwartet innerhalb von 220 ms diese Zeichen, andernfalls sendet er ein NAK. Nach erfolgtem Senden des Pufferinhaltes fügt der Sendetreiber DLE-ETX und bei der 3964R Prozedur den Block-Check-Character als Endekennung an und wartet auf Quittung.
Sendet die Gegenstelle innerhalb der QVZ das Zeichen DLE, so wurde der Datenblock fehlerfrei übernommen. Antwortet die Gegenstelle mit NAK, einem beliebigen anderen Zeichen (außer DLE), einem gestörten Zeichen oder die QVZ verstreicht ohne Reaktion, so wiederholt der Treiber das Senden des Datenblocks. Nach drei vergeblich gesendeten Versuchen bricht der Treiber ab und geht in die Grundstellung.
Sendet die Gegenseite während einer laufenden Sendung das Zeichen NAK, so beendet der Treiber den Block und wiederholt in der oben beschriebenen Weise.
Wenn du dich nicht penibel an das Protokoll und die Zeiten hältst, reagiert die S5 beleidigt (wie du gemerkt hast).
Ich würde dir empfehlen das Protokoll (s.o.) besser selbst zu schreiben als das PC Teil versuchen zum Laufen zu bringen. Wenn es um eine Steuerungsaufgabe geht, kauf dir für 5€ einen Arduino und realisiere deine Aufgabe damit. Das ist wesentlich einfacher und schont die Nerven.