S7 über Ethernet an PC (spezielles Protokoll)

Hallo,
werd mir heute mal mit einer virtuellen Maschine die Datei runterladen. Die Meldung kam schon, als ich die zip-Datei runtergeladen habe.
Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die Hilfe…

Konnte nun einiges erreichen… Habe ein Programm zum schauen auf den Bus installiert und kann somit die ankommenden Ethernet Telegramme anschauen. (alles für ein Telegramm)
Jetzt soll ich ja die unterschiedlichen Telegramme losschicken und da kommt mal wieder ein Problem…
So sieht ein Sendevorgang aus
Telegramm 1
Telegramm 2
Telegramm 3
Die Telegramme sollen aber auch einzeln und unabhängig voneinander versendet werden können.

Ich benutze ja die T-Bausteine. Dann war mein erster Lösungsansatz, dass ich mir eine Any-variable erstellt habe, diese habe ich anhand einer Schrittkette erst für Telegramm 1 deklariert und anschließend einen Merker am REQ Eingang des TSEND Bausteins gesetzt. Das erstellte Programm wurde gesendet. Über einen Merker am DONE Ausgang habe ich den 2. Schritt der Schrittkette eingeleitet und den REQ Merker zurückgesetzt. Nun wird das 2. Telegramm in den Any-Pointer geladen und ein REQ erneut gesetzt bis der DONE Ausgang kommt usw…

Nur das Problem:
Gesendet wird das Erste Protokoll vollständig, aber die folgenden 2 werden mit einer willkürlichen Bytezahl über den Bus versendet. Sogar manchmal ein Telegramm 4 mal hintereinander.
Getestet habe ich die Anypointer Auswahl mit einem Blockmove schon und dieser hat funktioniert…


Daraufhin habe ich dann die nächste Variante versucht und einfach 3 TSEND Bausteine eingefügt. Diese absolut mit einem Pointer versehen. Einen Merker zum REQ des ersten TSEND erstellt. Die anderen beiden TSEND Bausteine werden über den jeweils vorherigen DONE Merker gesetzt, der auf den folgenden REQ geht.

Was läuft da schief?
 
Zuletzt bearbeitet:
Hallo,

Jap da habe ich auch einfach immer eine INT Variable #LEN genommen und diese halt immer am Ende der Anypointer deklaration mit geschrieben...
 
Zurück
Oben