Wago PLC 750-8202 Mehrere Ping-Anfragen

sadik

Level-1
Beiträge
30
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich versuche zyklisch für drei IP - Adressen Ping Anfragen zu erstellen. Mit dem FB das in in dem Beitrag (http://www.sps-forum.de/wago/75985-wago-pfc200-ping-anfrage.html) gepostet wurde.
Mein Problem ist bei einer IP-Addresse funktioniert die Ping-Anfrage, jedoch wenn ich drei Instanzen erstelle und jeder Instanz die entsprechende IP zuweise funktioniert das nicht mehr und liefert z.B connectet=true auch wenn der Rechner nicht erreichbar ist.

Hier der Aufbau:
oPFCPingRouter(
sIpAddress:= IP_AddressRouter,
tTimeout:= t#2s,
xStart:= xSendRouter,
xReset:= xResetRouter,
xConnected=> xConnectedRouter,
dwErrorCode=> dwRetVal1);


oPFCPingVPN(
sIpAddress:= IP_AddressVPN,
tTimeout:= t#2s,
xStart := xSendVPN,
xReset:= xResetVPN,
xConnected=> xConnectedVPN,
dwErrorCode=> dwRetVal2);


oPFCPingINET(
sIpAddress:= IP_AddressInternet,
tTimeout:= t#2s,
xStart:= xSendINET,
xReset:= xResetInternet,
xConnected=> xConnectedINET,
dwErrorCode=> dwRetVal3);




xSendVPN := TRUE; xResetVPN := TRUE;
IF oPFCPingVPN.xConnected THEN
LED_SET_STATIC(diLED_No := LEDVPN, eColor := LED_COLOR_GREEN);
ELSE
LED_SET_STATIC(diLED_No := LEDVPN, eColor := LED_COLOR_RED);
END_IF

xSendRouter := TRUE; xResetRouter := TRUE;
IF oPFCPingRouter.xConnected THEN
LED_SET_STATIC(diLED_No := LEDVPN, eColor := LED_COLOR_GREEN);
ELSE
LED_SET_STATIC(diLED_No := LEDVPN, eColor := LED_COLOR_RED);
END_IF

xSendINET := TRUE; xResetInternet := TRUE;
IF oPFCPingINET.xConnected THEN
LED_SET_STATIC(diLED_No := LEDVPN, eColor := LED_COLOR_GREEN);
ELSE
LED_SET_STATIC(diLED_No := LEDVPN, eColor := LED_COLOR_RED);
END_IF
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Funktioniert nicht, habe ich einen Denkfehler? Ich habe beobachtet wenn die xConnected variable einen bestimmten schwellwert erreicht kann man es als ein timeout interpretieren,
aber es funktioniert trotzdem nicht einwandfrei?
Weitere Vorschläge ?

Folgendes habe ich bisher:

CASE PING OF
0:
xResetRouter := TRUE; xSendRouter := TRUE;
oPFCPingRouter(
sIpAddress := IP_AddressRouter,
tTimeout := t#2s,
xStart := xSendRouter,
xReset := xResetRouter,
xConnected => xConnectedRouter,
dwErrorCode => dwRetVal1);
IF oPFCPingRouter.xConnected THEN
Irouter := 0;
LED_SET_STATIC(diLED_No := LEDROUTER, eColor := LED_COLOR_GREEN);
ELSE
Irouter := Irouter + 1;
IF Irouter > 12 THEN
LED_SET_STATIC(diLED_No := LEDROUTER, eColor := LED_COLOR_RED);
ELSE
LED_SET_STATIC(diLED_No := LEDROUTER, eColor := LED_COLOR_GREEN);
END_IF
END_IF
tonRouter1(in:=NOT tonRouter2.q,pt:=t#0.7s);
tonRouter2(in:=tonRouter1.q,pt:=t#0.7s);
IF tonRouter2.Q THEN
PING := 1;
END_IF


1:
xResetVPN := TRUE; xSendVPN := TRUE;
oPFCPingVPN(
sIpAddress := IP_AddressVPN,
tTimeout := t#2s,
xStart := xSendVPN,
xReset := xResetVPN,
xConnected => xConnectedVPN,
dwErrorCode => dwRetVal2);
IF oPFCPingVPN.xConnected THEN
Ivpn := 0;
LED_SET_STATIC(diLED_No := LEDVPN, eColor := LED_COLOR_GREEN);
ELSE
Ivpn := Ivpn + 1;
IF Ivpn > 20 THEN
LED_SET_STATIC(diLED_No := LEDVPN, eColor := LED_COLOR_RED);
ELSE
LED_SET_STATIC(diLED_No := LEDVPN, eColor := LED_COLOR_GREEN);
END_IF
END_IF
tonVPN1(in:=NOT tonVPN2.q,pt:=t#1s);
tonVPN2(in:=tonVPN1.q,pt:=t#1s);
IF tonVPN2.Q THEN
PING := 2;
END_IF


2:
xResetInternet := TRUE; xSendINET := TRUE;
oPFCPingINET(
sIpAddress := IP_AddressInternet,
tTimeout := t#2s,
xStart := xSendINET,
xReset := xResetInternet,
xConnected => xConnectedINET,
dwErrorCode => dwRetVal3);
IF oPFCPingINET.xConnected THEN
Iinternet := 0;
LED_SET_STATIC(diLED_No := LEDINTERNET, eColor := LED_COLOR_GREEN);
ELSE
Iinternet := Iinternet + 1;
IF Iinternet > 12 THEN
LED_SET_STATIC(diLED_No := LEDINTERNET, eColor := LED_COLOR_RED);
ELSE
LED_SET_STATIC(diLED_No := LEDINTERNET, eColor := LED_COLOR_GREEN);
END_IF
END_IF
tonInet1(in:=NOT tonInet2.q,pt:=t#1.5s);
tonInet2(in:=tonInet1.q,pt:=t#1.5s);
IF tonInet2.Q THEN
PING := 0;
END_IF
END_CASE
 
- gestrichen wegen falsch -
;)

Eine Frage trotzdem: Muß xReset immer true sein? Du setzt xStart statisch unmittelbar vor Aufruf des Bausteins auf True. Wenn ich das richtig überflogen habe, ist das Rücksetzen von xStart durch den Baustein aber die Rückmeldung für fertig --> Daten gültig.
 
Zuletzt bearbeitet:
Der Bastein kann ON->OFF Zustand erkennen wenn der xStart := TRUE gesetzt wird, bei OFF->ON Übergang muss der Baustein reset:= TRUE durchgeführt werden.
Was aber das problem ist bei mehreren ping-anfragen mit unterschiedlichen ips wird auch bei offline hosts connected = true auch mit der CASE Ansatz
 
Zurück
Oben