Datenübernahme beim FC6 AG_RECV

Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine Frage bezüglich der Datenübernahme beim FC6:

Ich will Daten die über TCP/IP übertragen werden mittels des FC6 in einen DB schreiben.
Dass Daten gesandt werden sehe ich an meinem Mitschnitt mit Wireshark. Allerdings werden diese anschließend nicht in den DB geschrieben.

Ich habe mal gehört, dass der FC wartet bis der Puffer voll ist. Hat das etwas damit zu tun?

Danke für eure Hilfe
 
Wie hast du denn den FC6 parametriert. Wertest du den Ausgang NDR (für einen Zyklus hoch, sobald Daten empfangen wurden). Wie ist der Status Code nachdem du die Daten empfangen hast.
Gibt es eine Meldung am Ausgang ERROR?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, ich werte den NDR Ausgang aus um dann eben wieder etwas neues zu senden. Aber er wird nie high.
Was sagt es denn das "Byte 56" genau aus, wenn ich am RCV Eingang "P#DB3.DBX0.0 BYTE 56" stehen hab? hat das was mit den zu emfangenen Bytes zu tun?
 
Ja sicher. Das ist ein Any-Pointer, der angibt, wohin die Daten geschrieben werden sollen (Das nehmen ich mal aufgrund des Namens an). 56 Byte ist seine Länge. Ich kenne den FC6 allerdings nicht, aber nähere Auskunft sollte doch auf jeden Fall die Hilfe geben. Cursor auf den FC6 im Editor und dann "F1".
 
Was Ralle sagt stimmt schon. Die Daten werden in den DB3 in die ersten 56 Bytes geschrieben (0 - 55)
Was sagen der ERROR und der STATUS Ausgang. Denke daran, das die Ausgänge ERROR, STATUS und NDR immer nur für einen Zyklus anstehen.
Ein Beispiel zum FC5 und 6 gibt es unter Beitrags-ID 8707570
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, der FC6 gibt die Daten bei TCP/IP erst dann aus, wenn der Bereich lt. Any-Pointer (hier 56 Byte) gefüllt wurde. Kommen als 2 Telegramme á 28 Byte, gibts nur eine Meldung via NDR-Bit.
Am besten statische Tel-Länge vereinbaren. Dann gehts.

LG vuli
 
Ok, das erklärt dann vermutlich auch, warum ich in einem Zyklus den Status 16#8180 (keine Daten vorhanden) und im nächsten den Status 16#80b1 anliegen hab.

Danke euch allen für eure Hilfe
 
Ich habe meinen Baustein jetzt so umgeschrieben, dass nicht mehr auf einen globalen DB verwiesen wird, sondern auf ein Array in den Statischen FB Variablen.
Hier wird keine Länge mehr verlangt.

Mit Wireshark habe ich kontrolliert, dass die Nachrichten an die SPS gesendet werden, allerdings bringt der FC6 immer die Meldung, dass keine daten anliegen.
Waron kann dies liegen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe meinen Baustein jetzt so umgeschrieben, dass nicht mehr auf einen globalen DB verwiesen wird, sondern auf ein Array in den Statischen FB Variablen.
Hier wird keine Länge mehr verlangt.

Mit Wireshark habe ich kontrolliert, dass die Nachrichten an die SPS gesendet werden, allerdings bringt der FC6 immer die Meldung, dass keine daten anliegen.
Waron kann dies liegen?

Das versteh ich nicht so ganz, der FC6 hat sich doch aber nicht geändert oder?
 
Wenn ich beim RECV Eingang einen P#DB... angebe benötige ich zusätzlich die Angabe ...Bytes. So wie ich das aus den vorigen Antworten entnommen habe, wartet der FC bis diese Anzahl an Datenbytes in der CP empfangen worden sind bis er diese anschließend in den DB übetragt.

Nun habe ich in meinem FB ein statisches Array aus Bytes erzeugt und lass die Daten vom FX darin abspeichern. Die Sytay dafür ist dann nur '#Variable'. Somit entfällt diese Längenangabe.

Zwei von den benutzen FC6 übernehmen auch schon Daten, jedoch variieren hier die abgespeicherten Werte, obwohl die gesendete Nachricht immer die selbe ist.
Die beiden anderen verwendeten zeigen immer an, dass keine Daten anliegen.
 
Ein Array hat auch eine bestimmte Länge.
NDR kriegst du erst wenn die empfangenen Daten das Array füllen.
Du mußt unbedingt eine feste Länge zum empafangen haben.
Falls diese variabel ist mußt du erst ein Telegramm mit der Längenangabe
senden und mit dieser Angabe ein zweites RECV basteln.
 
Zurück
Oben