B&R: Problem mit AsTCP

Hallo,

irgendwie kapier ich das nicht oder das Handbuch redet da von einer ganz anderen Art der Kommunikation als die die ich anstrebe.

Im Beispiel wartet der Server so lange bis sich ein Client verbindet, bearbeitet den Request, sendet die Antwort zurück und schließt die Verbindung.

Ich hab das jetzt so gemacht gehabt das wenn sich ein Client verbindet wandert der ident in eine Liste die ich dann durchloope, aber getrennt von dem Part der auf neue Clients wartet. Sprich ist die Verbindung einmal hergestellt, sollen Server und Client Daten austauschen können ohne jedesmal eine neue Verbindung aufzumachen. Allerdings hab ich so das Problem das ich nicht mitbekomme wenn ein Client die Verbindung schließt.

Was ist jetzt intelligenter? Connect nur bei Bedarf oder die Verbindung ständig offenhalten? Bei letzterem, wäre es da sinnvoller die AsIma-Library zu verwenden?

Das ganze ist so gedacht: Ich habe eine Steuerung für eine Trocknungsanlage, die lustig den ganzen Tag vor sich hin nudelt. Ein zweites Panel soll irgendwo in der Pampa als Fernbedienung dienen, um a) zyklische Daten anzusehen (Temperatur, Laufzeit, Pausezeit) und b) um bestimmte Förderaggregate ein/auszuschalten.

Client sagt der Trocknungsanlage "Schalt mal bitte die Förderschnecke Nr. 3 ein", der Trockner liefert dann die Antwort "OK, läuft" oder eben "Hat nicht hingehauen aus dem und dem Grund"


Ich habe hier nur 1x PP220 10.4" und 2x 5.7" sowie ein PP420 5.7", also Remote-Terminal wie es mit einem PP300 oder MobilePanel möglich wäre ist leider nicht. VNC ist auch nicht machbar da es in der Anlage ziemlich staubig zugeht, und ein Rugged-Environment Notbuch mit Touch kostet zuviel.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist jetzt intelligenter? Connect nur bei Bedarf oder die Verbindung ständig offenhalten? Bei letzterem, wäre es da sinnvoller die AsIma-Library zu verwenden?

Verbindung offen lassen und die AsTCP verwenden. Funktioniert so wie du das gerne möchtest.
Du bekommst eine geschlossene Verbindung nur bei aufrufen des TCPReceive Fubs mit oder beim TCPSend oder wenn sich der Client eben nochmal verbinden möchte.
Du musst den Teil der auf neue Clients wartes auch abpollen. Wenn sich ein unbekannter Client verbindet kannst du den ja wieder mit Close rausschmeißen. ;) <- So funktioniert das sinnvoll.
Der Server muss ja sowieso Receive pollen um mitzubekommen, dass neue Daten da sind.

Die Zustände sehen dann so aus:

TCPServer um mitzubekommen, dass neue Clients da sind, wenn der Client erlaubt ist dann zyklisch receive, ansonsten close
TCPReveive zyklisch receive
TCPSend senden wenn nötig

TCPClose schließen wenn notwendig
 
Hallo Leute,
vorerst mal bin neu auf der SPS Schiene von B&R, habe zurzeit die Aufgabe ein *.txt File von dem C Laufwerk zu lesen. Hierbei hat dies in der Simulation (mit ARSim) ganz gut geklappt(fileIO lib:file open, file read und file close) aber auf dem PPC klappt das nicht, hier sollte ich diesen DevLink() verwenden, habe aber nicht wirklich einen Plan wie der Arbeitet,könntet ihr mir bitte weiterhelfen (schreibe in Strukturiertem Text):
Prg_INIT

DevLink_0(enable:=1,pDevice:=ADR('D:\Config_Datei'),pParam:=ADR('/DEVICE=D:\\Config_Datei\Data.txt'));DevLink_status:=DevLink_0.status;

bOK:=FALSE;
byErrorLevel
:=0;
strDevice
:='Laufwerk_C'; //HinterlegtimConfigurationView->Cpu.sw->CPU->FileDevices->Hinzufügen...
END_Prg
CYCLIC

case()
... file open
...file read
...file close...
 
Zurück
Oben