TIA TRCV funktioniert nur wenige Male

SPS-Koch

Member
Beiträge
8
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Moin,
Ich erstelle gerade eine Kommunikation von einer 1214C mit einem Messgerät aus eigenem Hause.
Das geschieht via TCP und funktioniert im Grunde auch schon. TCON richtet die Verbindung ein, per TSend kann ich senden und mit TDISCON kann ich die Verbindung abbauen. Mein Problem, der Baustein TRCV empfängt die ersten Datenpakete und ich kann sie schön verarbeiten. Nach ein paar Datenpaketen kommt allerdings nichts mehr an. In Wireshark sehe ich allerding, dass sowohl mein Kommando an das Messgerät als auch die Antwort gesendet werden. Baue ich die Verbindung ab und wieder neu auf funktioniert es wieder ein paar mal. TRCV läuft im ADHOC Modus (LEN=0) und legt die Daten in einen Array[0...255] of Char.

Gruß SPS-Koch
 

Zombie

Well-known member
Beiträge
710
Punkte Reaktionen
113
Hast du den TRCV auf dauerhaft Listening?
Wenn die Verbindung dauerhaft aktiv gehalten wird, müsste das funktionieren.
Falls die Verbindung aber von einer Seite abgebrochen wird, stellt auch TRCV seinen Dienst ein. Kann man über den Statuswert feststellen.
 

Imolator

Active member
Beiträge
42
Punkte Reaktionen
12
Zuviel Werbung?
->Hier kostenlos registrieren
Was zeigt denn der Parameter STATUS des TRCV-Bausteins an? Meistens kann man damit das Problem gut einkreisen.
Fehlercodes sind die Zahlen ab h8085 (oder dezimal Werte >32900).

ERRORSTATUS* (W#16#...)Erläuterung
00000Auftrag erfolgreich ausgeführt. Die aktuelle Länge der empfangenen Daten wird am Parameter RCVD_LEN ausgegeben.
07000Baustein nicht für den Empfang bereit.
07001Baustein ist für den Empfang bereit, Empfangsauftrag wurde aktiviert.
07002Zwischenaufruf, Empfangsauftrag wird bearbeitet.
Hinweis: Während dieser Bearbeitung werden Daten in den Empfangsbereich geschrieben. Währenddessen kann der Zugriff auf den Empfangsbereich inkonsistente Daten liefern.
18085
  • Parameter LEN ist größer als der größte zulässige Wert.
  • Der Wert des Parameters LEN oder DATA wurde nach dem ersten Aufruf geändert.
  • Beide LEN-Parameter und der Parameter DATA haben den Wert "0" oder LEN ist länger als der maximal zulässige Wert (65536).
18086Der Parameter ID liegt außerhalb des zulässigen Adressbereichs (1 .. 0x0FFF).
18088
  • Empfangsbereich ist zu klein.
  • Der Wert am Parameter LEN ist größer als der am Parameter DATA angegebene Empfangsbereich.
180A1Kommunikationsfehler:
  • Die angegebene Verbindung wurde noch nicht aufgebaut.
  • Die angegebene Verbindung wird gerade beendet. Empfangsauftrag über diese Verbindung ist nicht möglich.
  • Die Verbindung wird gerade neu initialisiert.
180B3Die parametrierte Protokollvariante (Parameter connection_type in der Verbindungsbeschreibung) ist UDP. Bitte verwenden Sie bei einer UDP-Verbindung die Anweisung "TURCV".
180C3
  • Ein Baustein mit dieser ID wird bereits in einer anderen Prioritätsgruppe bearbeitet.
  • Interner Mangel an Ressourcen.
180C4Temporärer Kommunikationsfehler:
  • Die Verbindung zum Partner kann derzeit nicht aufgebaut werden.
  • Die Schnittstelle empfängt neue Parametereinstellungen oder die Verbindung wird aufgebaut.
180C5Der remote Partner hat die Verbindung abgebaut.
180C6Der remote Partner kann nicht erreicht werden (Netzwerkfehler).
180C7Zeitüberschreitung der Ausführung.
180C9Die Länge des Empfangsbereichs ist kleiner als dieLänge der gesendeten Daten.
 
Zuletzt bearbeitet:
OP
S

SPS-Koch

Member
Beiträge
8
Punkte Reaktionen
0
Der Status von TRCV ist 7002. Ich versuche wollte gerne den Ausgang NDR nutzen um zu erkennen, dass neu Daten vorhanden sind. Aber der scheint auch dann nichts zu machen.
 

Imolator

Active member
Beiträge
42
Punkte Reaktionen
12
Sollte die Datenlänge immer gleich lang sein, so wäre der "Datenempfang mit angegebener Länge" unproblematischer. Könnte bei einem Messgerät sinvoller sein, falls es immer gleichgrosse Datenpakete verschickt.
 

Zombie

Well-known member
Beiträge
710
Punkte Reaktionen
113
Der Status von TRCV ist 7002. Ich versuche wollte gerne den Ausgang NDR nutzen um zu erkennen, dass neu Daten vorhanden sind. Aber der scheint auch dann nichts zu machen.
Der ist nur einen Zyklus lang an. Als Flanke sozusagen.

Nutze den NDR um die Daten entweder in dem Zyklus auszuwerten, oder in einen anderen Speicher zu schreiben.
 
Oben