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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 24 von 24

Thema: S7 Timer Problem

  1. #21
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von hucki Beitrag anzeigen
    Zitat Zitat von jule Beitrag anzeigen
    Simulationsdaten-FC:
    UN M 77.0
    SPBN nix
    ...
    Ich persönlich finde diese doppelten Verneinungen einfach nur schrecklich.
    Die beiden Negationen kann man doch auch gegeneinander wegkürzen und schon muss man beim Lesen des Codes nicht mehr dreimal um die Ecke denken.
    Ja, das sieht auf den ersten Blick verwirrend aus. Doch da sollte man sich dran gewöhnen. Ich formuliere auch meist die Bedingung so, daß der bedingte Code bei Zutreffen der Bedingung ausgeführt wird, und wenn die Bedingung nicht zutrifft dann wird mit SPBN der Code übersprungen.

    Außerdem entspricht die Formulierung der Bedingung so exakt der Formulierung wie sie bei IF angegeben würde:
    Code:
    IF T7 AND NOT M77.0 THEN
      tuwas()
    END_IF
    entspricht
    Code:
         U    T7
         UN   M77.0
         SPBN nix
    
         CALL tuwas
    
    nix: NOP 0
    Aufwendiger und schlechter verstehbar wäre der Code, wenn man die Bedingung nach dem durchdenken noch extra negiert formulieren müßte, damit man mit SPB drüberweg springen kann (und hier im Beispiel ist noch nichtmal eine Klammer dabei):
    Code:
         ON   T7
         O    M77.0
         SPB  nix
    
         CALL tuwas
    
    nix: NOP 0
    Also ich würde auch bei nur einzeiligen Bedingungen die beiden NOT nicht gegeneinander wegkürzen.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  2. #22
    jule ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.01.2014
    Beiträge
    11
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Ich persönlich finde diese doppelten Verneinungen einfach nur schrecklich.
    Die beiden Negationen kann man doch auch gegeneinander wegkürzen und schon muss man beim Lesen des Codes nicht mehr dreimal um die Ecke denken.
    Also ich tu mich deutlich schwerer dabei, den Code zu lesen, wenn die Negationen weggestrichen werden würden...

    So ich hab nun ein neues Problem. Habe gestern das Programm fertig gestellt und eine Weile durchlaufen lassen. Nach 30 Minuten ging die CPU in Stop mit folgendem Fehlercode:
    STOP durch Zeitfehler (OB nicht geladen oder nicht möglich, bzw. kein FRB vorhanden)
    Unterbrechungstelle im Anwenderprogramm: Weckalarm-OB (OB 35)
    Prioritätsklasse: 12
    FC-Nummer: 1
    Bausteinadresse: 36
    Bisheriger Betriebszustand: RUN
    Angeforderter Betriebszustand: STOP (intern)
    interner Fehler, kommendes Ereignis
    08:23:31.073 21.02.2014
    (Kodierung: 16# 4568 FF84 8C70 0C23 0001 0024)
    Dabei habe ich in meinem Programm gar kein OB35...
    Habe dennoch mal geschaut welche Aufrufzeit für den OB35 definiert ist... sind standartmäßig 100ms... Sollte doch mehr als genug sein für mein sehr kleines Programm...

    außerdem tritt der Fehler ja nicht sporadisch auf, sondern wirklich nur nach genau 30 min... das kommt ein wenig komsich vor...

    Habt ihr irgendeine Idee, was dahinterstecken könnte?

    Im Anhang mal mein Programm. Und ja, richtige Zufallszahlen sind das jetzt nun auch nicht, aber reicht für unsere Zwecke.

    Zufallsgen_Energiedaten.zip

    EDIT:
    einfach mal den OB35 eingefügt und nichts reingeschrieben... jetzt läuft das Programm ohne Fehler seit knapp 35 min...

    Ich versteh das zwar alles nicht wirklich, aber hauptsache es funktioniert. Anscheinend muss ich mich nochmal mit den Weckalarmen auseinandersetzen. So ganz kapieren tu ich das gerade nicht, was da das Problem war!
    Geändert von jule (21.02.2014 um 11:40 Uhr)

  3. #23
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Ist Dein Programm in der CPU gleich dem Offline-Programm? Alle Bausteine gleich? Hardwarekonfig geladen und gleich?
    Verwendet Dein Programm die SFC39..SFC42?

    In der CPU ist/war ganz sicher kein OB35 vorhanden?
    Dann könnte die Meldung eventuell ein Firmwarefehler sein, ich vermute daß eigentlich eine Zykluszeitüberschreitung gemeint ist, aber die Unterbrechungsstelle falsch angegeben ist.
    Welche CPU mit welcher Firmware hast Du?

    Hast Du mal auf die Zykluszeit-Statistik geschaut? Gibt es vor/nach dem zitierten Diagnosepuffereintrag weitere Einträge mit etwa dem selben Zeitpunkt?

    Ich habe mal Dein Programm überflogen und kann keinen Zusammenhang zwischen dem Stop und OB35 finden.
    Aber einige Kritikpunkte:
    - FC1 Gefahr einer Endlosschleife und Zykluszeitüberschreitung: ungeprüft unbegrenzt viele Rücksprünge zur Marke "neu"
    Falls bei der Zufallszahlenberechnung tatsächlich ein Fehler auftreten sollte, dann würde ich einfach t_Untergrenze als Ergebnis (Zufallszahl) zurückgeben
    Irgendwo im Internet habe ich schonmal einen anderen Zufallsgenerator gesehen, weiß aber nicht mehr wo...
    - FC10 verwendung von nichtinitialisierten TEMP-Variablen, z.B. das S von #sonntag, #samstag, #werktag müssen = sein. (der weit verbreitete Denkfehler "Setze einen Wert" führt häufig zu unvollständiger und/oder unnötig komplizierter Logik)
    - M77.0 wird an undurchsichtig vielen Stellen beschrieben, für den freilaufenden Generator darf er aber nur noch am T7 beschrieben werden (U T7 | = M77.0)

    Wenn der Aufruf des Zufallsgenerators von einem Timer gesteuert wird und der Zufallsgenerator den selben Zeitgenerator auswertet, dann ist der Zufallsgenerator nicht mehr "unabhängig". Es kann passieren, daß bestimmte "Zufälle" nie vorkommen bzw. nur noch bestimmte Zufälle.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    jule (21.02.2014)

  5. #24
    jule ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.01.2014
    Beiträge
    11
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Ist Dein Programm in der CPU gleich dem Offline-Programm? Alle Bausteine gleich? Hardwarekonfig geladen und gleich? Verwendet Dein Programm die SFC39..SFC42? In der CPU ist/war ganz sicher kein OB35 vorhanden?
    Ich hatte vorher ein ziemlich großes Programm eingespielt, dabei trat zuerst der Fehler auf. Da war der OB35 und die besagten SFCs enthalten. Da aber die SPS schon vorher immer mal vollkommen ausgelastet war, entschied ich mich, den Zufallsgenerator in ein einzelnes Programm zu schreiben.
    Habe dann die CPU urgelöscht und das Programm samt HW-Konfig so geladen wie ich es hier hochgeladen habe. Da trat dann der Fehler erneut auf. Dann habe ich einfach einen leeren OB35 eingefügt, alle Bausteine auf die CPU geladen und dann funktionierte es...


    Zitat Zitat von PN/DP Beitrag anzeigen
    Welche CPU mit welcher Firmware hast Du?
    Siemens S7-400, CPU 416-3 DP V3.1, 6ES7 416-3XL00-0AB0

    Zitat Zitat von PN/DP Beitrag anzeigen
    Hast Du mal auf die Zykluszeit-Statistik geschaut? Gibt es vor/nach dem zitierten Diagnosepuffereintrag weitere Einträge mit etwa dem selben Zeitpunkt?
    Nein, da habe ich nun leider nicht nach geschaut!

    Zitat Zitat von PN/DP Beitrag anzeigen
    Aber einige Kritikpunkte:
    Danke für die Anmerkungen! Habe ich gleich einmal geändert.
    Der Zufallsgenerator ist im übrigen eine stark abgespeckte Version, die ich hier im Forum gefunden habe.

    Zitat Zitat von PN/DP Beitrag anzeigen
    Wenn der Aufruf des Zufallsgenerators von einem Timer gesteuert wird und der Zufallsgenerator den selben Zeitgenerator auswertet, dann ist der Zufallsgenerator nicht mehr "unabhängig". Es kann passieren, daß bestimmte "Zufälle" nie vorkommen bzw. nur noch bestimmte Zufälle.
    Das ist mir durchaus bewusst. Deshalb meine Anmerkung, dass es keine wirklich zufälligen Zahlen sind. Für unsere Testzwecke sollte dies aber auch genügen.


    Mittlerweile habe ich den OB35 wieder gelöscht und ließ das Programm noch einmal durchlaufen. Innerhalb von 35min kein Fehler aufgetreten. So langsam zweifle ich an mir selbst . Ich glaub, es wird Zeit, das Wochenende wird. Werd das Programm mal bis zum Feierabend durchlaufen lassen und schauen ob es wirklich fehlerfrei läuft.

Ähnliche Themen

  1. Step 7 Timer Problem
    Von olafhahn im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 24.01.2014, 13:47
  2. Step7 Timer problem
    Von Schlapi im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 28.01.2007, 13:02
  3. Timer Problem !!!
    Von Ma_su im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 04.04.2006, 15:12
  4. WinSPS-s7 Timer Problem
    Von Snake787 im Forum Programmierstrategien
    Antworten: 2
    Letzter Beitrag: 18.01.2006, 11:46
  5. Timer problem
    Von spooki01 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 14.07.2003, 10:49

Stichworte

Lesezeichen

Berechtigungen

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