IP_Control Verbindung Restarten

Begonnen von Omalik, 04. September 2012, 13:25:18

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Omalik

Ich hoffe es kann mir jemand einen Tipp geben, wie ich das am besten lösen kann:
Ich habe folgendes Problem:  Ich habe ein TCP/IP Verbindung zu einem AV Receiver. (C_Mode Type 0 := Aktive TCP auf Port 23 (Telnet)mit fixer IP Adresse auch die SPS hat eine Fixe IP). Ich kann alles super ansteuern und mit der SPS  den AV bedienen. An dieser Stelle Recht herzlichen Danke an das  OSCAT Team!!

Jetzt zum Problem:
Wenn der AV Receiver im Standby geschalten wird (von der SPS) und die Netzwerkverbindung kurzzeitig getrennt wird kann ich keine Kommunikation mehr aufbauen, was sehr unschön ist.

Lösungsansatz 1:
Wenn ich die SPS Stop und alle Var zurücksetze und „neue“ starte kommt die Kommunikation zustande.

Lösungsansatz 2:
Ich kann die Var im IPC.C_enable auf false setzen und den Mode von 0 auf 4 und zurück dann komme ich auch zum Ziehl. Leider sind die Variablen nicht vom SPS Programm aus zu übschreiben (Keine Schreibberechtigung). Musste das mit  forcieren machen.

Gibt es eine einfache Möglichkeit, eine Reset des IP_Control durchzuführen? Ich sehen vor lauter Bäumen den Wald nicht mehr, denke ich.

Danke für eure Hilfe.

peewit

#1
wenn bei einer tcp verbindung der partner sich einfach ohne kommentar verabschiedet, dann bleibt eine "tote" tcp verbindung zurück
so eine tote verbindung könntest du mit regelmässigen dummy abfragen erkennen, da es dann zu einen Receive-Timeout error kommt
nur durch beenden und neuen aufbauen der verbindung kann diese wieder zustande kommen

das hast du ja mit deinen beiden varianten auch geschafft
wobei die variante 2 die einzig vernünftige ist

warum du die verbindung mit enable = nicht ein/ausschalten kannst, kann ich so nicht erahnen

kannst du dein programm online stellen, dann kann ich auch einen tip geben

Omalik

Hallo peewit

Besten Dank für Deine Unterstützung. Das Programm oder besser gesagt einige Teile davon habe ich hochgestellt. Es ist nicht lauffähig da ich alles gelöscht habe was nicht mir der Kommunikation zu tun hat. Es ist so einige übersichtlicher. Ich möchte Dir auch nicht mehr aufwand machen als nötig.

Kurz zum Programm
AV wird zyklisch aufgerufen.  Damit der FB SE_Data_AV.
Wenn etwas schief geht drücke ich jetzt noch manuell Reset um es schneller zu testen.
Start_Reset  die 3 CASE werden in der Steuerung im Sekundentackt abgearbeitet.

Noch als zusatzinfo. Da ich Beamer, DSP auch über TCP / IP  aber UDP  Protokoll steuere (da habe ich keine Verbindungsprobleme) habe ich für jedes Gerät eine SE_Data_YX gemacht.  Ich weiss dass ich alles über die gleiche Sendeeinhat machen könnte aber Teilweise ist das Kommando +CR oder Kommando +CR+LF  usw.

Würde mich freuen wenn du Dir die Zeit nehmen könntest um das anzuschauen. Danke



[gelöscht durch Administrator]

Omalik

Hallo peewit

Hast Du schon Zeit gehabt das Programm anzuschauen oder brauchst du noch mehr Infos??

Danke

peewit

hallo

momentan ist es so das die verbindung beim ersten senden aufgebaut wird und bestehen bleibt
wenn du die verbindung nach dem senden der daten und empfangen der antwort einfach mit enable=false beendest
dann wird das ausschalten der gegenseite auch keine tote tcp verbindung mehr produzieren, zumindest sehr unwahrscheinlich

also nach dem daten senden und empfangen und auswerten der daten einfach IP_C.C_ENABLE := FALSE machen
dann wird die tcp verbindung beendet

und eine nicht aufgebaute verbindung kann auch nicht hängenbleiben

Omalik

Hallo peewit

Besten dank für deine Bemühungen. Das ist die Lösung von meinem Problem. danke.