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

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

Thema: Sicheren Zustand bei Programmfehler gewährleisten

  1. #1
    Registriert seit
    19.09.2008
    Beiträge
    24
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    wie läßt sich denn am besten eine Art Watchdog-Task/Programm implementieren, dass im Falle eines Fehlers im Haupt-Task (also wenn er sich z.B. in einer Endlosschleife befindet) sicherstellt, dass bestimmte Geräte in einen definierten Zustand gebracht werden.
    Gibt's da eine besonders elegante/sichere Methode, z.B. über die Verwendung von Bus-Controllern statt Bus-Kopplern o.ä?
    Oder hat TwinCAT dafür vielleicht schon irgendwelche Funktionen vorgesehen?
    Zitieren Zitieren Sicheren Zustand bei Programmfehler gewährleisten  

  2. #2
    Registriert seit
    20.11.2004
    Ort
    Linz, OÖ
    Beiträge
    1.365
    Danke
    96
    Erhielt 177 Danke für 133 Beiträge

    Standard

    Üblicherweise haben Echtzeit-Systeme wie CoDeSys eine Zykluszeitüberwachung. Sprich: wenn das Programm in einer Endlosschleife hängen bleibt wird diese auslösen und die CPU stoppen (oder wie das bei CoDeSys auch immer heißen mag). Üblicherweise programmiert man zyklische Tasks auch so, dass man damit keine Endlossschleifen produzieren kann (also z.B. keine while-Schleifen).
    Geändert von Maxl (25.09.2008 um 16:55 Uhr)
    Bin aufgrund §2 der "Rechte des Betreibers" der Forum-Regeln nicht mehr aktiv, da nicht nicht akzeptiere, dass Informationen und Erkenntnisse ohne Quellangabe weitergegeben werden sollen. Jedem steht frei, auf die gleichen Erkenntnisse durch Eigenversuche zu kommen, vor allem Buchautoren.

  3. #3
    suud ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.09.2008
    Beiträge
    24
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nur wenn die CPU stoppt sind auch alle Ausgänge inaktiv. Ich muss aber
    betimmte Ausgänge schalten wenn das geschieht. Also z.B. müssen Ventile unbedingt zugefahren werden und dafür muss das entsprechende Signal an den Motor weitergegeben werden.

  4. #4
    Registriert seit
    20.11.2004
    Ort
    Linz, OÖ
    Beiträge
    1.365
    Danke
    96
    Erhielt 177 Danke für 133 Beiträge

    Standard

    Da bleibt mir nur 1 Vorschlag:
    - Programm so verfassen, dass keine Endlosschleifen auftreten können!
    Falls dies nicht möglich ist: Ventiltechnik oder Motore so ausführen, dass der stromlose Zustand der "sichere" ist. (evtl. Backup-Schaltungen per Hardware).

    Das Thema hatte ich ehrlich gesagt noch nie! Sogar wenn ich in die Verlegenheit gekommen bin, while-Schleifen zu verwenden, gabs immer programmtechnische Möglichkeiten, um das Festlaufen in einer Endlosschleife zu verhindern.

    Um was für eine Anwendung handelt es sich denn?
    Bin aufgrund §2 der "Rechte des Betreibers" der Forum-Regeln nicht mehr aktiv, da nicht nicht akzeptiere, dass Informationen und Erkenntnisse ohne Quellangabe weitergegeben werden sollen. Jedem steht frei, auf die gleichen Erkenntnisse durch Eigenversuche zu kommen, vor allem Buchautoren.

  5. #5
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.726
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Also jetzt mal grundsätzlich:
    Du solltest grundsätzlich davon ausgehen, das die SPS jederzeit plötzlich und unerwartet
    auf Stop springen kann, wenn dann ein sicherer Zustand notwendig ist, der über das wegschalten der Ausgänge
    hinausgeht musst du das ganze unbedingt extern per Hardware lösen.

    Ich bin mir irgendwie auch gar nicht wirklich sicher, ob wenn wirklich ein Task "festhängt",
    das dann überhaupt noch ein anderer Task läuft, bzw. spätestens ab dem endgültigen Auslösen des Watchdog,
    läuft definitiv nichts mehr, es sei denn Beckhoff unterscheidet sich in dem Punkt von jedem anderen SPS-Hersteller,
    aber das will ich jetzt so auch nicht glauben.

    Allerdings speziell der Punkt Zykluszeitüberschreitung wird mit einem guten, robusten Programmaufbau nie passieren.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  6. #6
    suud ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.09.2008
    Beiträge
    24
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Da ist was dran... dann muss ich das wohl anders lösen.
    Das mit den Schleifen ist ein Punkt an den ich so noch garnicht gedacht habe. Es kommt bei mir zwar nicht auf Echtzeit an, aber ich denke mal, man sollte dann bei einer SPS wohl trotzdem möglichst immer versuchen Schleifen zu vermeiden und statt dessen alles rein Zyklusorientiert zu implementieren. Also statt einer For-Schleife nimmt man einen Bausteininternen Counter und setzt als Output ein Flag wenn die Berechnung oder was auch immer fertig ist?

  7. #7
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.726
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Also wenn "For-Schleifen" ein wenig mit bedacht eingesetzt werden,
    stellen diese bei einem relativ schnellen System wie Beckhoff sicherlich kein Problem dar,
    schon gar nicht muss man unbedingt auf Sie verzichten ...

    Schleifen belasten halt allgemein die Zykluszeit relativ Stark, im Vergleich zur sequentiellen Abarbeitung über mehrere Zyklen.

    Wirklich gefährlich sind z.B. While Schleifen, hier muss man auf jeden Fall Vorsorge treffen das die Schleife halt notfalls abgebrochen wird.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  8. #8
    Registriert seit
    20.11.2004
    Ort
    Linz, OÖ
    Beiträge
    1.365
    Danke
    96
    Erhielt 177 Danke für 133 Beiträge

    Standard

    Dem ist nur noch hinzuzufügen, dass die meisten aktuellen Systeme die möglichkeit bieten, Tasks mit geringer Priorität aber großzügiger Zykluszeitüberwachung zu programmieren.

    Bei B&R z.B. ist dies die Tasklasse #8. Diese hat die niedrigste Priorität und wird daher vom "zyklischen" Programm (tc #1 - #7) immer wieder unterbrochen. Vom zyklischen Programm wird ein Startsignal gesetzt, die aufwändige Berechnung läuft im niederprioren Task und setzt eine Fertigmeldung an den zyklischen Task.

    Trotz niedriger Priorität dürfen aber trotzdem keine Endlosschleifen zustande kommen. Aber man muss nicht krampfhaft die Berechnung sequentiell über mehrere Zyklen durchführen - das System verkraftet so schon mal FOR-Schleifen, die sich über 1-2 ms ziehen.

    mfg Maxl
    Bin aufgrund §2 der "Rechte des Betreibers" der Forum-Regeln nicht mehr aktiv, da nicht nicht akzeptiere, dass Informationen und Erkenntnisse ohne Quellangabe weitergegeben werden sollen. Jedem steht frei, auf die gleichen Erkenntnisse durch Eigenversuche zu kommen, vor allem Buchautoren.

  9. #9
    suud ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.09.2008
    Beiträge
    24
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von MSB Beitrag anzeigen
    Schleifen belasten halt allgemein die Zykluszeit relativ Stark, im Vergleich zur sequentiellen Abarbeitung über mehrere Zyklen.
    Darauf wollte ich hinaus, nicht dass Schleifen allgemein "böse" sind in einer SPS.

  10. #10
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Schleifen zur Abarbeitung von Prozessen sind verboten. Einzig FOR-Schleifen für die Iteration über Arrays sind sinnvoll. Alles muss man mit State-Machines oder Automaten hinbekommen.

    TwinCat kann Variablen mit einem Standartwert versehen. Das wird bei der Deklaration der Variablen gemacht. Wenn das nicht reicht, dann muss die Hardware den Rest gewährleisten. Das dürfte der Fall sein, wenn z.B. das BUS-Kabel beschädigt wird.

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 16.02.2011, 21:56
  2. Parameterdaten auf der SPS sicheren
    Von AUDSUPERUSER im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 13.10.2008, 06:34
  3. s5 s7 für windows programmfehler
    Von Krma1985 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 10.01.2008, 17:16
  4. programmfehler...
    Von Ibaxx im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 29.09.2007, 21:02
  5. SCL-Programmfehler Wer kann helfen?
    Von sps_nath im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 14.12.2003, 16:46

Lesezeichen

Berechtigungen

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