-> Hier kostenlos registrieren
Hallo Leute,
ich möchte Daten (400 - 800 Bit) von einer SPS(CPU 315-2DP mit CP 343-1 IT) zu einem PC senden, dazu verwende ich auf der SPS Seite den Baustein AG_SEND (FC 5). Ich habe das Ganze mit TCP und UDP ausprobiert. Hier ist der Code – Ausschnitt, der für das Senden verantwortlich ist:
U DB3.DBX 0.0
S DB3.DBX 4.0
UN DB3.DBX 0.0
R DB3.DBX 4.0
CALL "AG_SEND"
ACT :=DB3.DBX4.0
ID :=1
LADDR :=W#16#100
SEND :=P#DB6.DBX0.0 BYTE 50
LEN :=50
DONE :=DB3.DBX0.0
ERROR :=DB3.DBX0.1
STATUS:=DB3.DBW2
Folgende Frage habe ich:
Wenn ich die Zykluszeit künstlich verlängere, so wird ab einer bestimmten Zyklusdauer (etwa 10 ms) konstant alle zwei Zyklen ein Telegramm übertragen. Wählt man die Zykluszeit sehr groß, etwa 1 s, so wird trotzdem alle zwei Zyklen ein Wert übertragen. Zuerst dachte ich, dass das am TCP liegt, weil nach dem Senden der Nachricht eine Quittung erwartet wird. Als ich die Kommunikation mit UDP realisiert habe, wurde immer noch nur alle zwei Zyklen ein Datenpacket übertragen. Da die Kommunikation als nebenläufiger Prozess ausgeführt wird, müsste es doch möglich sein jeden Zyklus ein Wert zu senden.
Kennt jemand vielleicht die Ursache, warum die Übertragung eines Telegramms genau 2 Zyklen dauert?
Für Eure Hilfe wäre ich sehr dankbar.
ich möchte Daten (400 - 800 Bit) von einer SPS(CPU 315-2DP mit CP 343-1 IT) zu einem PC senden, dazu verwende ich auf der SPS Seite den Baustein AG_SEND (FC 5). Ich habe das Ganze mit TCP und UDP ausprobiert. Hier ist der Code – Ausschnitt, der für das Senden verantwortlich ist:
U DB3.DBX 0.0
S DB3.DBX 4.0
UN DB3.DBX 0.0
R DB3.DBX 4.0
CALL "AG_SEND"
ACT :=DB3.DBX4.0
ID :=1
LADDR :=W#16#100
SEND :=P#DB6.DBX0.0 BYTE 50
LEN :=50
DONE :=DB3.DBX0.0
ERROR :=DB3.DBX0.1
STATUS:=DB3.DBW2
Folgende Frage habe ich:
Wenn ich die Zykluszeit künstlich verlängere, so wird ab einer bestimmten Zyklusdauer (etwa 10 ms) konstant alle zwei Zyklen ein Telegramm übertragen. Wählt man die Zykluszeit sehr groß, etwa 1 s, so wird trotzdem alle zwei Zyklen ein Wert übertragen. Zuerst dachte ich, dass das am TCP liegt, weil nach dem Senden der Nachricht eine Quittung erwartet wird. Als ich die Kommunikation mit UDP realisiert habe, wurde immer noch nur alle zwei Zyklen ein Datenpacket übertragen. Da die Kommunikation als nebenläufiger Prozess ausgeführt wird, müsste es doch möglich sein jeden Zyklus ein Wert zu senden.
Kennt jemand vielleicht die Ursache, warum die Übertragung eines Telegramms genau 2 Zyklen dauert?
Für Eure Hilfe wäre ich sehr dankbar.