watchdog oder lebensbit realisieren?

ottopaul

Level-1
Beiträge
160
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, wie realisiere ich einen watchdog mit Integerwerten?
was muss der Kunde auf seiner seite machen und was ich auf meiner?
der kunde möchte halt gerne integerwerte haben....naja...
hat jemand einen vorschlag?

danke euch
 
Hallo.

Zähle einfach den Wert im Integer z.B. im Sekundentakt hoch. Schicke diesen Wert zu deinem Partner, dieser sollen den Wert einfach in einer Schleife auf einem anderen Integer zurückschicken und du vergleichst dann die beiden Wert auf gleichheit. Solange der Wert ungleich ist, läuft eine Zeit, bei Gleicheit wird die Zeit gestoppt. Ich hoffe ich konnte dir das etwas erklären. Andernfalls kann ich dir auch ein Beispiel schicken.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
vermute mal, das Du eine Datenverbindung zu irgendeiner Visu (oder was auch immer) des Kunden hast.

Dann sende einen Integerwert rüber. Der Kunde empfängt diesen Wert und sendet Ihn dir zurück. Wenn Du "Deinen" Wert wieder empfängst, erhöhst Du diesen Wert um 1 und sendest Ihn wieder zum Kunden, usw. usf.

Wenn Du in einer Zeit x Deinen Wert nicht zurückbekommst, ist die Verbindung entweder gestört, oder der Kunde antwortet nicht. Das gleiche gilt für die Kundenseite.

Man kann natürlich auch den empfangenen Wert schon auf der Kundenseite erhöhen und dann zurücksenden. Dann müßtest Du nur Deinen gesendeten Wert auf Ungleichheit zum empfangenen prüfen. Ist im Prinzip aber gehopst wie gesprungen....

...ahhh, Hubert war schneller...
 
Zuletzt bearbeitet:
danke erstmal, habt ihr auch die programmierung dazu?
danke, danke

Kannst es gene hiermit probieren (vorher in der Symbolik einen FB mit der symbolischen Bezeichnung "Watchdog" anlegen) - oder Quelle entsprechend anpassen.

Am besten als AWL-Quelle speichern und übersetzen (Baustein kann danach geöffnet und in FUP dargestellt werden). Der Baustein ist Multiinstanzfähig, kommt völlig ohne globale Varibalen (Merker, Timer, E/A's) aus.


Code:
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
... und diese Version kann auch bei noch bestehenden Kopplungsausfall quittiert werden:

Code:
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//
////                                        FALSEmit steigender 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_Failure_S : BOOL ;    
  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; 
      FP    #HM_Failure_S; 
      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
 
Zuletzt bearbeitet:
Zurück
Oben