# Ping



## iwan (6 Dezember 2010)

Hallo Zusammen

Ich habe eine Wago 750-841 und eine Webcam an einem UMTS Router.
Leider hängt sich der UMTS Router ab und zu auf und die Webcambilder werden nicht mehr hochgeladen.
Gibt es eine Möglichkeit mit der SPS einen Ping ins Internet abzusetzen um zu überprüfen ob die Internetverbindung noch io ist?
Ich könnte dann mittels Relais, den Router "neustarten".

Gruss
Iwan


----------



## NorbertP (6 Dezember 2010)

Hallo,

in der WagoLibSockets.lib gibt es eine Funktion Sock_Ping.
Damit kannst du einen Ping absetzen und bekommst bei erfolgreicher Antwort ein True.

Gruß
Norbert


----------



## Markus Rupp (6 Dezember 2010)

bitte bedenke dabei das die ip-adresse als hex-wert anzugeben ist, sonst gibt es probleme was bei mir schon dazu führte das ein loop-back die ergebnisse verfälschte


----------



## iwan (6 Dezember 2010)

Vielen Dank für die Antworten!

Das klingt gut, werde das ausprobieren...

Grüsse
Iwan


----------



## tomrey (3 Februar 2014)

NorbertP schrieb:


> in der WagoLibSockets.lib gibt es eine Funktion Sock_Ping.
> Damit kannst du einen Ping absetzen und bekommst bei erfolgreicher Antwort ein True.



hi, muß den alten thread mal rausholen:
1. der return value ist typ SOCK_RET.
wie kann man den weiter auswerten/bearbeiten/umwandeln? (string geht schon mal nicht)
2. der input ist die ip-adresse in hex.
gibt es eine funktion, die ip in hex umwandelt?
Hintergrund:
Ich will nen watchdog bauen, der finder/steckdosen schaltet, wenn bestimmte IP im Lan an/aus sind. (Auch für reset bei bluescreen geeignet).
Dank+Gruß


----------



## @lex (4 Februar 2014)

Hi tomrey,

1. Die Erklärung hierzu findest unter den Datentypen "SOCK_RET" der Lib (WagoLibSockets). 0 ist gut.

2. Die Umwandlung von "IP in dotted format" in ein DWORD erledigt SysSockInetAddr aus der SysLibSockets.lib. Dann hast du zwar ein DWORD, jedoch in der verkehrten Byte-Order. Sprich du musst diesen Rückgabewert noch mal durch die Funktion SysSockNtohl der selbigen Bibliothek laufen lassen. Dann bekommst du den Wert, den du an SOCK_PING übergeben kannst.


```
[FONT=arial]
dwAdresse:=SysSockNtohl(dwNet:=SysSockInetAddr(stIPAddr:=sMeineIP));

wRueckgabe:=SOCK_PING(address:=dwAdresse, timeout:=t#30ms)
[/FONT]
```


----------



## tomrey (4 Februar 2014)

Danke, bei mir klappts aber noch nicht ganz:


oder liegt das am simulationsmodus (hab grad keine wago hier)?
für die Ausgabe:
Ist der Rückgabewert ein word oder bekomme ich auch ein string? kann ich mit EQ 0 vergleichen und mit dem bool weiterarbeiten?
gruß


----------



## @lex (4 Februar 2014)

Hi,
die Funktionen bauen auf Systemfunktionen auf - also keine Chance für die Simulation.

Du kannst den Rückgabewert als WORD zurücklesen und auf 0 vergleichen - dann musst du dir die genaue Bedeutung aus der Auflistung heraussuchen.
Du kannst den Rückgabewert aber auch als Beschreibung (z.B. "SOCK_TIMEOUT") zurücklesen - d.h. da es ENUMs sind, deklarierst du den Rückgabewert genauso wie in der Bibliothek angezeigt als SOCK_RET.


----------



## tomrey (4 Februar 2014)

@lex schrieb:


> Du kannst den Rückgabewert aber auch als Beschreibung (z.B. "SOCK_TIMEOUT") zurücklesen - d.h. da es ENUMs sind, deklarierst du den Rückgabewert genauso wie in der Bibliothek angezeigt als SOCK_RET.



ok, hab ich verstanden, was mir jetzt noch fehlt ist die Vergleichsvariable, die ja wohl den string z.B. "SOCK_TIMEOUT" enthält. wie krieg ich diesen string als sock_ret deklariert (für EQ)?
so etwa:


wobei ich dann sOK in einer Visu anzeige und mit xOK weitere Aktionen (z.B. Steckdose v. PC resetten) starten kann...

Gruß


----------



## @lex (4 Februar 2014)

CFC, ich glaub's nicht ... ;-P

Hab ich doch oben geschrieben; kannst auch den Ziffernwert nehmen und vergleichen. Einfach mal rumprobieren...


----------



## tomrey (4 Februar 2014)

CFC is schee - zumindest für den DAU, der schon genug (Fremd)Sprachen in seinem Leben gelernt hat...
Danke, habs jetzt soweit in der Simulation ohne Übersetzungsfehler.
Der Test kommt dann demnächst an der Maschine.
Gruß


----------



## tomrey (5 Februar 2014)

Also hat perfekt funktioniert - danke nochmal!


----------



## CoDeSysUser (10 April 2014)

Hallo zusammen!
ich hab mir die Antworten zum Thema angesehen und wollte den Ping auf einer Wago PFC200 (750-8204) implementieren.

Leider scheint die WagoLibSockets.lib von der PFC200 nicht unterstützt zu werden. (Kompilieren geht Fehlerfrei, aber beim Übertragen auf die SPS gibt es: "Folgende Funtkionen konnten nicht gebunden werden SOCK_PING ") 

Gruß

Hat jemand eine andere Lösung?


----------



## Nost (12 April 2014)

Kannst dich ja auch per modbus oder snmp mit der kamera verbinden insofern sie das unterstuetzt und zyklisch einen x beliebigen wert auslesen. Wenn die kommunikation nicht glabt kannst du den router neustarten


----------



## CoDeSysUser (14 April 2014)

Ich hab gar keine Kamara, bin in diesem Thema wegen des Ping. 
Eine Kommunikation zwischen den SPSen über Modbus habe ich schon eingebaut und auch funktionsfähig. 
Ich möchte jedoch über einen Ping prüfen ob die Teilnehmer angeschlossen sind die ich an der Schnittstelle erwarte. Nicht alle Teilnehmer haben bei mir den Modbus implementiert.


----------



## fluke123 (19 Oktober 2016)

Ich habe das mal für meine Wago 750-881 erstellt und ohne Fehlermeldung auf die Steuerung kopiert. Sobald ich aber im Task die Anwesenheit(PRG) einbinde stürzt die Steuerung ab oder bleibt in der Anwesenheit(PRG) hängen. Sieht jemand den Fehler?


----------

