-> Hier kostenlos registrieren
Hallo ich habe folgendes Problem, und noch nirgendwo eine Antwort gefunden.
Ich muss per Ethernet über eine CPU315-2DP/CP343-1 Lean (343-1CX10-0XE0) daten von Lichtschranken empfangen. Ich kann an den Lichtschranken nichts einstellen(vor allem nicht die Datenlänge im Header mitgeben). Außerdem ist der Transfer sehr Zeitkritisch.
Zum Ablauf: Ich sende zum Empfänger 1 Kommandobyte, und empfange auf jeden Fall 1 Echo dieses Bytes, sowie 2 Byte Daten. Es funktioniert wenn ich die daten sofort per AG_RECV abzuholen. Jedoch ist dann der Datentransfer zu langsam. Ich muss so schnell wie möglich wieder einen Befehl an die Lichtschranke senden, damit die Messauflösung möglichst groß wird, und ich viele Datenbytes bekomme.
Also hatte ich überlegt, den Puffer der CP "vollaufen" zu lassen (Arrayfeld, typ Byte), und am ende der Messung die Daten Byteweise abzuhoen, bis kein NDR mehr kommt.(Da ist es nicht mehr so Zeitkrtisch!) Jedoch kommt hier der Fehler "Zielbereich zu klein".
Gibt es da eine lösung oder ein eleganteres vorgehen? Ich weiß nicht (oder nur in etwa) wie groß die Datenmenge wird, die pro Messung anfällt. Wenn ich die Messwerte in ein Großes Array lege habe ich das Problem, dass ich nicht weiß wann das Array voll ist.
Mfg
Buff
Ich muss per Ethernet über eine CPU315-2DP/CP343-1 Lean (343-1CX10-0XE0) daten von Lichtschranken empfangen. Ich kann an den Lichtschranken nichts einstellen(vor allem nicht die Datenlänge im Header mitgeben). Außerdem ist der Transfer sehr Zeitkritisch.
Zum Ablauf: Ich sende zum Empfänger 1 Kommandobyte, und empfange auf jeden Fall 1 Echo dieses Bytes, sowie 2 Byte Daten. Es funktioniert wenn ich die daten sofort per AG_RECV abzuholen. Jedoch ist dann der Datentransfer zu langsam. Ich muss so schnell wie möglich wieder einen Befehl an die Lichtschranke senden, damit die Messauflösung möglichst groß wird, und ich viele Datenbytes bekomme.
Also hatte ich überlegt, den Puffer der CP "vollaufen" zu lassen (Arrayfeld, typ Byte), und am ende der Messung die Daten Byteweise abzuhoen, bis kein NDR mehr kommt.(Da ist es nicht mehr so Zeitkrtisch!) Jedoch kommt hier der Fehler "Zielbereich zu klein".
Gibt es da eine lösung oder ein eleganteres vorgehen? Ich weiß nicht (oder nur in etwa) wie groß die Datenmenge wird, die pro Messung anfällt. Wenn ich die Messwerte in ein Großes Array lege habe ich das Problem, dass ich nicht weiß wann das Array voll ist.
Mfg
Buff