Offene TCP Kommunikation von PC zu S7

funkey

Level-2
Beiträge
361
Reaktionspunkte
109
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.
Ich möchte gerne mit einer SPS die FBs TCON, TDISCON, TSEND, TRCV für eine offene TCP-Kommunikation nutzen. Die FBs sind ja gut beschrieben und da ist ja auch alles klar, aber wie mache ich das PC-seitig. Dort sollte der aktive Verbindungsaufbau stattfinden. Hab leider nur geringe Kenntnisse in C/C++. Welche Befehle der Windows-API benötige ich da und in welcher Reihenfolge?
Wäre nett wenn mir da jemand auf die Sprüge helfen könnte, damit ich den Einstieg schaffe.

Danke.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kleines Beispiel Programm in CSharp...

Hab dir mal ein kleines Beispiel Programm in CSharp hochgeladen...

Vieleicht hilfts dir ja weiter.

Der Quellcode verwendet eine Klasse von mir (TCPFunctionsAsync) die im Endeffekt das ganze TCp handling kapselt (Verbindungs Aufbau, Reconnect, ...)

Es gibt einen event wenn neue Daten angekommen sind.

Senden kannst du einfach über eine Methode.

Beim Konstruktor der Klasse kannst du noch angeben ob die Verbindung aktiv oder passiv aufgebaut werden soll. Des weiteren, kannst du auch noch eine Telegrammlänge mitgeben, dann wird immer auf diese länge gewartet.

Auch kannst du noch einen SynchronisationsContext übergeben, in diesem wird dann der Event aufgerufen (fall du empfangen daten z.. direkt in winforms anzeigen willst, und keine invokes benutzen magst)
 

Anhänge

  • TCPMinimal.zip
    6,9 KB · Aufrufe: 83
Zuletzt bearbeitet:
Hallo Jochen, vielen Dank für deinen Beispielcode und deine C#-Klasse.
Nun habe ich einen Anhaltspunkt und kann hoffentlich was erreichen. Ich will allerdings bei C++ bleiben, und werde versuchen deine Klasse dafür umzumodeln. Wird wahrscheinlich nicht ganz so einfach, weil C# einige Sachen in Klassen bereitstellt, die in C++ nur direkt über API durchzuführen sind, deshalb wäre ich für weitere Hilfe in diese Richtung auch noch sehr dankbar.

Gruß
funkey
Und nochmals Danke Jochen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für den Link! Hab das ganze jetzt zuerst mit AutoIt gelöst und es funktioniert einwandfrei. Nun da ich begriffen habe wie es geht, werde ich mir mit C++ eine kleine DLL basteln.
 
Zurück
Oben