-> Hier kostenlos registrieren
Hallo,
ich versuche gerade Daten über die Serielle RS485 Onboard Schnittstelle eines PFC200s zu empfangen mit der Bibliothek WagoAppCom in Codesys 3.5.
Das klappt auch soweit gut, ich habe nur folgendes Problem:
- Ich habe einen Empfangspuffer RxBuff mit Größe [0..199](Das ist die maximale Länge die übermittelt werden kann)
- Es können aber auch weniger Daten übermittelt werden
Beispiel: Erstes Telegramm 50 Bytes, 2. Telegramm 100 Bytes und 3. Telegramm 150 Bytes. Ich kann vorher nicht wissen wie viele Bytes in der nächsten Nachricht kommen ich weiß nur die Maximale Anzahl.
Hier mein Bausteinaufruf:
FBSerialInterface_Read_mod_0(xExecute := xRead,
Connection := Connection_Open,
pRxBuffer := ADR(RxBuff),
udiRxBufferSize := 200,
udiToRead := 200);
Das Problem was ich habe ist, dass die Telegramme immer an den Puffer drangehängt werden. Wenn der Puffer nun schon bis [150] gefüllt ist und ein Telegramm der Länge 150 gesendet wird, wird der Puffer voll beschrieben und fängt dann wieder ab [0] an. Dabei verliere ich aber dann die Bytes die noch in den Puffer gepasst haben.
Eine einfache Lösung wäre es natürlich nach jeder Nachricht wieder bei RxBuff[0] mit dem Schreiben anzufangen.
Hat jemand dort einen Vorschlag, eine Lösung oder einen anderen Baustein für mich?
Vielen Dank!
ich versuche gerade Daten über die Serielle RS485 Onboard Schnittstelle eines PFC200s zu empfangen mit der Bibliothek WagoAppCom in Codesys 3.5.
Das klappt auch soweit gut, ich habe nur folgendes Problem:
- Ich habe einen Empfangspuffer RxBuff mit Größe [0..199](Das ist die maximale Länge die übermittelt werden kann)
- Es können aber auch weniger Daten übermittelt werden
Beispiel: Erstes Telegramm 50 Bytes, 2. Telegramm 100 Bytes und 3. Telegramm 150 Bytes. Ich kann vorher nicht wissen wie viele Bytes in der nächsten Nachricht kommen ich weiß nur die Maximale Anzahl.
Hier mein Bausteinaufruf:
FBSerialInterface_Read_mod_0(xExecute := xRead,
Connection := Connection_Open,
pRxBuffer := ADR(RxBuff),
udiRxBufferSize := 200,
udiToRead := 200);
Das Problem was ich habe ist, dass die Telegramme immer an den Puffer drangehängt werden. Wenn der Puffer nun schon bis [150] gefüllt ist und ein Telegramm der Länge 150 gesendet wird, wird der Puffer voll beschrieben und fängt dann wieder ab [0] an. Dabei verliere ich aber dann die Bytes die noch in den Puffer gepasst haben.
Eine einfache Lösung wäre es natürlich nach jeder Nachricht wieder bei RxBuff[0] mit dem Schreiben anzufangen.
Hat jemand dort einen Vorschlag, eine Lösung oder einen anderen Baustein für mich?
Vielen Dank!