Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Lifebeat / Watchdog

  1. #1
    Registriert seit
    15.05.2018
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Tag,

    ich möchte ein Aggregat per Profinet einbinden, welches mir einen Lifebeat jede Sekunde zur Verfügung stellt.
    Dieses Lifebeat möchte ich nun nutzen, um zu überprüfen, ob die Verbindung zum Aggregat steht.

    Leider bin ich noch recht neu in Sachen AWL/SCL/FUP und weiß mich nicht so recht anzulegen.

    Ich möchte zB. während 6 Sekunden (Timer) prüfen, ob sowohl eine negative wie positive Flanke vom Lifebeatsignal aufgetaucht ist.
    Ein Timer von 6 Sekunden habe ich.
    Per [P] sprich [N] kann ich auf negative oder positive Flanke testen.
    Ich weiß jedoch nicht wie es umsetzen kann, dass ich während 6 Sekunden prüfe, ob beides erfolgreich war, also sowohl P wie N von meinem Signal.

    Könnte bitte jemand mir eine Tipp geben? Bin auch offenen für eine andere Lösung, falls mein Gedanke nicht richtig sein sollte.

    Würde mich freuen.

    Gruß,
    Patrick
    Zitieren Zitieren Lifebeat / Watchdog  

  2. #2
    Registriert seit
    13.02.2004
    Beiträge
    219
    Danke
    48
    Erhielt 18 Danke für 18 Beiträge

    Standard

    Zitat Zitat von Patrick.lu Beitrag anzeigen
    Guten Tag,

    ich möchte ein Aggregat per Profinet einbinden, welches mir einen Lifebeat jede Sekunde zur Verfügung stellt.
    Dieses Lifebeat möchte ich nun nutzen, um zu überprüfen, ob die Verbindung zum Aggregat steht.

    Leider bin ich noch recht neu in Sachen AWL/SCL/FUP und weiß mich nicht so recht anzulegen.

    Ich möchte zB. während 6 Sekunden (Timer) prüfen, ob sowohl eine negative wie positive Flanke vom Lifebeatsignal aufgetaucht ist.
    Ein Timer von 6 Sekunden habe ich.
    Per [P] sprich [N] kann ich auf negative oder positive Flanke testen.
    Ich weiß jedoch nicht wie es umsetzen kann, dass ich während 6 Sekunden prüfe, ob beides erfolgreich war, also sowohl P wie N von meinem Signal.

    Könnte bitte jemand mir eine Tipp geben? Bin auch offenen für eine andere Lösung, falls mein Gedanke nicht richtig sein sollte.

    Würde mich freuen.

    Gruß,
    Patrick
    Ich mache das immer mit 2 Timer
    Timer 1 läuft bei Signal 0 des lifebits
    Timer 2 läuft bei Signal 1.
    die Verzögerungszeit ist bei 5s.

    Ist ein Timer abgelaufen ist die Verbindung gestört.

    Gruss
    Guenni


    Gesendet von iPhone mit Tapatalk

  3. #3
    Patrick.lu ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.05.2018
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für deine Antwort.

    Verstehe ich das richtig, du machst anschließend eine Differenz der beiden Timer, falls diese Differenz größer gleich 5 Sekunden ist, gibst du einen Fehler raus?
    Oder denke ich zu kompliziert?

    Gruß,
    Patrick

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    12.145
    Danke
    988
    Erhielt 3.589 Danke für 2.901 Beiträge

    Standard

    Du denkst zu kompliziert. Guenni schaut, ob es eine von 2 Einschaltverzögerungen schafft abzulaufen.


    Man muß nicht (mehr oder weniger umständlich) unterscheiden, ob das Signal 0 bleibt oder 1 bleibt oder eine P-Flanke oder eine N-Flanke hat und danach (womöglich mehrere) Timer verwenden. Man kann einfach ganz universell prüfen, ob das Signal sich ändert (*) und dahinter z.B. eine Ausschaltverzögerung (TOF) verwenden. Wenn der Timer abläuft dann ist die letzte Signal-Änderung zu lange her. Bei TOF entspricht der Timer-Ausgang dem Gut-Fall: Timer.Q = 1: Signaländerung war da / Timer.Q = 0: Signal ändert sich nicht (mehr). Die Prüfung auf Änderung kann man mit einem Lifebit oder auch mit einem sich ändernden Zahlenwert (z.B. Telegrammnummer) machen.

    (*)
    binäre/boolsche Signale prüft man auf Änderung mit XOR (Signal_jetzt XOR Signal_vorher ...; Signal_vorher := Signal_jetzt;)
    numerische Werte prüft man auf Änderung mit Vergleichern (Wert_jetzt <> Wert_vorher ...; Wert_vorher := Wert_jetzt;)

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Registriert seit
    25.06.2017
    Ort
    Oerlinghausen
    Beiträge
    772
    Danke
    60
    Erhielt 145 Danke für 119 Beiträge

    Standard

    Zitat Zitat von Patrick.lu Beitrag anzeigen
    . . . Per [P] sprich [N] kann ich auf negative oder positive Flanke testen.
    Ich weiß jedoch nicht wie es umsetzen kann, dass ich während 6 Sekunden prüfe, ob beides erfolgreich war, also sowohl P wie N von meinem Signal. . . .
    Hallo Patrick!

    Wenn ein Signal vom 0-Pegel auf den 1-Pegel wechselt, dann spricht man von einer positiven Flanke und im umgekehrten Fall von einer negativen Flanke - entschuldige bitte, dass ich so weit aushole, das wird Dir nicht neu sein.
    Wenn z.B. nach einer positiven Flanke keine negative Flanke kommt, dann kann auch nicht wieder eine positive Flanke kommen, da das Signal unverändert auf 1-Pegel "festhängt".
    Auch hier gilt entsprechendes für den umgekehrten Fall, also die negative Flanke. Das klingt alles so selbstverständlich, dass man eigentlich nicht extra darauf hinweisen möchte.
    Aber wichtig ist die Schlussfolgerung daraus: prinzipiell genügt es, nur die positiven oder nur die negativen Flanken zu überwachen.
    In Deinem Fall erwartest Du, dass 1 s nach einer positiven Flanke eine negative kommt und 1 s nach einer negativen eine positive.
    Fragst Du z.B. nur die positiven Flanken ab, so dauert es schlimmsten Falls 1 s länger, bis Du ein Absterben der Verbindung feststellen kannst.

    Du brauchst nicht extra per [P] oder per [N] die Flanken zu erkennen, weil die Timer "von Hause aus" nur durch (positive) FlankenWechsel gestartet ("getriggert") "werden.
    Gibst Du das Signal, das Du überwachen willst, auf den Timer für die positiven Flanken und das negierte Signal auf den anderen Timer für die negativen Flanken, musst Du nur noch die Ausgänge der beiden Timer "verodern" und das war's.

    Hast Du einen Timer zur Verfügung, bei dem die Zeit weiterläuft, wenn sein Eingang wieder auf 0-Pegel zurückgeht, dann ist Haralds Vorschlag aus #4 interessant, mit einer XOR-Verknüpfung den aktuellen Zustand des EingangsSignals mit dem Zustand im vorherigen Zyklus zu vergleichen, denn am Ausgang der XOR-Verknüpfung erhältst Du Impulse, die nur 1 Zyklus lang andauern.

    TriggerImpuls := SignalAlt XOR SignalNeu
    SignalAlt := SignalNeu

    "SignalAlt" ist der "selbstgemachte" FlankenMerker. Er muss natürlich im jeweils nächsten PLC-Zyklus noch unverändert zur Verfügung stehen.

    Gruss, Heinileini

    PS:
    Ich habe oben geschrieben "Du brauchst nicht extra per [P] oder per [N] die Flanken zu erkennen, weil . . .".
    Es stört sogar, wenn Du die Timer mit 1-Zyklus-langen Impulsen triggerst und Du Timer "erwischst", die mit Ende des 1-Pegels am Eingang die ZeitZählung vorzeitig stoppen.
    Geändert von Heinileini (13.06.2018 um 20:06 Uhr) Grund: PS hinzu

  6. #6
    Patrick.lu ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.05.2018
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für eure ausführlichen Antworten.

    Ich hoffe ich habe etwas brauchbares daraus interpretiert.

    Meine Lösung sieht nun wie folgt aus:
    SPS_Forum_watchdog.JPG

    Es scheint zu klappen, also nochmal vielen Dank euch allen!

  7. #7
    Registriert seit
    03.12.2008
    Beiträge
    701
    Danke
    168
    Erhielt 196 Danke für 120 Beiträge

    Standard

    Also ich persönlich arbeite für bei solchen Sachen nicht gern mit Timern.
    Ich mache das so:
    CPU-Taktmerker (1s) zählt einen Wert hoch.
    Flanke vom Lifebit nullt diesen Wert wieder.
    Dann vergleichen ob Wert gleich oder größer als 6 ist.
    Wenn das der Fall ist war länger als 6 Sekunden keine Flanke vom Lifebit da.
    Dann Störung setzen! (nicht mit "=" zuweisen weil nach Überlauf der Wert irgendwann wieder bei Null anfängt)
    Störungsquittierung setzt den Zählwert natürlich auch auf Null

    Beim CPU Taktmerker kann ich darauf verlassen, dass er zuverlässig ohne Wenn und Aber kommt.
    Bei zwei Timern die sich gegenseitig abstoßen ist das immer so eine Sache.

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    12.145
    Danke
    988
    Erhielt 3.589 Danke für 2.901 Beiträge

    Standard

    Zitat Zitat von Patrick.lu Beitrag anzeigen
    Ich hoffe ich habe etwas brauchbares daraus interpretiert.

    Meine Lösung sieht nun wie folgt aus:
    SPS_Forum_watchdog.JPG
    Gut zusammengefasst. Einfach und funktioniert.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #9
    Registriert seit
    25.06.2017
    Ort
    Oerlinghausen
    Beiträge
    772
    Danke
    60
    Erhielt 145 Danke für 119 Beiträge

    Standard

    Zitat Zitat von Paul Beitrag anzeigen
    Bei zwei Timern die sich gegenseitig abstoßen ist das immer so eine Sache.
    Ja ja Paul das stimmt schon, aber hier war nicht die Rede davon, einen Zeittakt mit zwei Timern zu stricken, sondern die Pausen zwischen den Flanken des WachHundSignals mit 1 oder 2 Timern zu überbrücken.
    (Für irgendwas müssen die Timer doch zu gebrauchen sein! ;o)

  10. Folgender Benutzer sagt Danke zu Heinileini für den nützlichen Beitrag:

    nobi1959 (14.06.2018)

  11. #10
    Registriert seit
    03.12.2008
    Beiträge
    701
    Danke
    168
    Erhielt 196 Danke für 120 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Heinileini Beitrag anzeigen
    Ja ja Paul das stimmt schon, aber hier war nicht die Rede davon, einen Zeittakt mit zwei Timern zu stricken, sondern ....
    Ich hab mir die ganzen Vorschläge und Ansätze jetzt nicht bis ins Detail durchgelesen.
    Wollte einfach nur einen Vorschlag bringen wie sich das robust und relativ einfach umsetzen lässt.


    Die Lösung die der TE dann gepostet hat, weißt meiner Ansicht nach schon ein paar Schwachstellen auf.
    1. Bevor das Lifebit zum ersten mal kommt ist der TOF ja False --- > d.h. wir haben erst mal immer für ein paar Zyklen den Fehler anstehen
    2. Da der Fehler nicht gesetzt, sondern nur mit "=" zugewiesen wird, verschwindet er von selbst wieder (evtl. stoppt deshalb die Maschine und niemand weiß warum)

    Nichts für Ungut Harald, aber ich hab mich gewundert, dass Du das ausdrücklich gelobt hast

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 11.06.2012, 09:20
  2. Watchdog
    Von Pinguino im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 31.10.2007, 07:49
  3. watchdog
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 05.02.2006, 21:45
  4. watchdog
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 27.01.2006, 08:27
  5. WATCHDOG
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 09.11.2003, 23:35

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •