-> Hier kostenlos registrieren
Hallo, ich habe folgendes Problem:
ich versuche seit längerem sinnvolle Daten mit einer S7 315-2 DP zu empfangen.
Ich benutze hierzu den AG_RECV v 4.7, mit der CP343-1 Lean, FW 2.0.
nun zum Problem: Ich kann Daten empfangen, jedoch dauert es unterschiedlich lange bis der Puffer vom AG_RECV geleert wird.
Manchmal wird der Puffer von AG_RECV schon nach 7 Bytes in ein Array "Daten" übergeben, manchmal dauert es auch länger. Nachdem die Daten einmal übergeben wurden dauert es immer die selbe Bytezahl, bis der Puffer von AG_RECV wieder an das Array "Daten" übergeben wird. (in diesem fall waren es dann 7 Bytes, mittels hterm gesendet)
Die Informationen, die im Array abgelegt werden sind korrekt.
Den Baustein spreche ich wie folgt an:
Der FB wird Zyklisch im OB1 aufgerufen.
Nun meine Frage: Wie kann ich beeinflussen, nach wieviel Byte der Puffer von AG_RECV gelehrt wird, oder dass ich wenigstens weiß, nach dem wievieilten Byte meine Daten an das Array Übergeben werden? Kann man irgendetwas an der CP einstellen?
Was hat die Arraygröße mit dem Datenempfang zu tun? Denn wenn ich das Array von 0..3 Laufen lasse, gibt es eine Fehlermeldung 80B1 h.
Wäre super wenn jemand weiterhelfen könnte...
Mfg buff
ich versuche seit längerem sinnvolle Daten mit einer S7 315-2 DP zu empfangen.
Ich benutze hierzu den AG_RECV v 4.7, mit der CP343-1 Lean, FW 2.0.
nun zum Problem: Ich kann Daten empfangen, jedoch dauert es unterschiedlich lange bis der Puffer vom AG_RECV geleert wird.
Manchmal wird der Puffer von AG_RECV schon nach 7 Bytes in ein Array "Daten" übergeben, manchmal dauert es auch länger. Nachdem die Daten einmal übergeben wurden dauert es immer die selbe Bytezahl, bis der Puffer von AG_RECV wieder an das Array "Daten" übergeben wird. (in diesem fall waren es dann 7 Bytes, mittels hterm gesendet)
Die Informationen, die im Array abgelegt werden sind korrekt.
Den Baustein spreche ich wie folgt an:
Code:
FUNCTION_BLOCK FB1
VAR_TEMP
// temporäre Variablen
END_VAR
VAR
recv_done:BOOL;
recv_error:BOOL;
recv_status:WORD;
recv_len:INT;
Daten : ARRAY [0..6] OF BYTE ;
END_VAR
//////////////////////////////////////////////////
AG_RECV
(
ID := 1, // IN: INT
LADDR := w#16#0100, // IN: WORD
RECV :=daten, // IN: ANY
NDR :=recv_done, // OUT: BOOL
ERROR :=recv_error, // OUT: BOOL
STATUS :=recv_status, // OUT: WORD
LEN :=recv_len // OUT: INT
); // VOID
END_FUNCTION_BLOCK
//////////////////////////////////////////////////
DATA_BLOCK DB1 FB1
//
// Baustein-Kommentar ...
//
BEGIN
Der FB wird Zyklisch im OB1 aufgerufen.
Nun meine Frage: Wie kann ich beeinflussen, nach wieviel Byte der Puffer von AG_RECV gelehrt wird, oder dass ich wenigstens weiß, nach dem wievieilten Byte meine Daten an das Array Übergeben werden? Kann man irgendetwas an der CP einstellen?
Was hat die Arraygröße mit dem Datenempfang zu tun? Denn wenn ich das Array von 0..3 Laufen lasse, gibt es eine Fehlermeldung 80B1 h.
Wäre super wenn jemand weiterhelfen könnte...
Mfg buff