FUNCTION_BLOCK "Watchdog"
TITLE =Buskopplung überwachen
//// ========================================================================== //
//// Baustein zur Überwachung einer Buskopplung. //
//// zusätzlich speichender Alarm (Failure_S), der mit "Quitt" quittiert werden //
//// muss. //
//// //
//// Schnittstellenbeschreibung: //
//// RemoteCounter: Zähleingang der Partnersteuerung//
//// wdTime: Verzögerungszeit. Wenn über die hier //
//// eingestellte Zeitdauer der Wert //
//// RemoteCounter nicht verändert wurde //
//// wird Failure und Failure_S auf TRUE //
//// gesetzt. //
//// MyCounter: Zähler für Partner CPU. Dieser Wert //
//// wird in jedem Zyklus inkrementiert. //
//// Dieser Zähler macht keine Überlauf- //
//// prüfung. //
//// Failure: Fehlerausgang - ist für die Dauer //
//// des Kopplungsausfalls (mit einge- //
//// stellter Verzögerung) TRUE //
//// Failure_S: Wie Failure, wird jedoch erst wieder//
//// FALSE, wenn Kopplung ok und stei- //
//// gender Flanke von Quitt //
//// Quitt: Quittieraufforderung (setzt Ausgang //
//// "Faulure_S" zurück. Quitt wird auf pos. //
//// Flanke getriggert und im Baustein zu- //
//// rückgesetzt (setzen in Visu reicht als //
//// Quittierung). //
//// ========================================================================== //
{ S7_m_c := 'true' }
AUTHOR : LON
FAMILY : SPSFORUM
NAME : WATCHDOG
VERSION : 1.0
VAR_INPUT
RemoteCounter : INT ; //eingehender Zähler des Remotepartners
wdTime : TIME := T#500MS; //Überwachungszeit, default 500ms
END_VAR
VAR_OUTPUT
MyCounter : INT ; //Life-Zähler zum Remote
Failure { S7_m_c := 'true' }: BOOL ; //Kopplung ist gestört
Failure_S { S7_m_c := 'true' }: BOOL ; //Fehler, nicht quittiert
END_VAR
VAR_IN_OUT
Quitt { S7_m_c := 'true' }: BOOL ; //Quittierung f. Ausgang Failure_S
END_VAR
VAR
HM_RemoteCounter : INT ;
HM_Quitt : BOOL ;
TON_WD : "TON";
END_VAR
BEGIN
NETWORK
TITLE =Teste, ob eingehender Counter sich innerhalb einer Zeit ändert..
U( ;
L #RemoteCounter;
L #HM_RemoteCounter;
==I ;
) ;
= L 0.0;
BLD 103;
CALL #TON_WD (
IN := L 0.0,
PT := #wdTime);
NOP 0;
NETWORK
TITLE =bei keiner Änderung: Fehlerausgänge setzen
U #Quitt;
FP #HM_Quitt;
R #Failure_S;
U #TON_WD.Q;
= #Failure;
U #Failure;
S #Failure_S;
NOP 0;
NETWORK
TITLE =Eigenen Zähler hochzählen
L #MyCounter;
L 1;
+I
T #MyCounter;
NETWORK
TITLE =aktuellen Zählerzustand Remote merken
L #RemoteCounter;
T #HM_RemoteCounter;
NETWORK
TITLE =
U #Quitt;
R #Quitt;
NETWORK
TITLE =
SET ;
SAVE ;
END_FUNCTION_BLOCK