Systemzeit lesen mit der SFC 64 "TIME_TCK"

Onkel Dagobert

Level-3
Beiträge
5.816
Reaktionspunkte
1.444
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

beim Auslesen der Systemzeit tritt bekanntermaßen auf einigen CPUs sporadisch ein Fehler auf. Siemens empfiehlt, die ausgelesene Systemzeit auf Plausibilität zu überprüfen. Bei große Abweichungen vom erwarteten Wert soll man den ausgelesenen Wert einfach ignorieren.

Nun habe ich in einem Anwendungsprogramm eine Maßnahme ohne Plausibilitätsprüfung gesehen und frage mich, ob diese korrekt funktioniert. Bevor ich sie hier nenne, möchte ich jedoch erst einmal das Publikum befragen :lol: . Weiß jemand etwas Genaueres über diesen Fehler und wie man ihn umgehen kann?


Gruß, Onkel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich habe einen eigenen IEC-Timer geschrieben welcher den SFC64 aufruft. Dabei habe ich eine Plausibilitätskontrolle eingebaut, welche prüft ob die Systemzeit sich seit dem letzten Aufruf um mehr als eine Sekunde geändert hat. Weiter musste ich berücksichtigen, dass die Systemzeit nach einen Neustart oder nach einem Ueberlauf wieder von vorne beginnt.
 
Hallo,

im Lokaldatenbereich stehen zwar verschiedene Zeiten aber die Systemzeit die ich meine steht dort nicht. In meinen Anwendungen gehe ich prinzipiell ähnlich vor wie Martin. Ich lese die Systemzeit jedoch nur einmal am Zyklusbeginn aus, korrigiere sie und lege sie global ab.

Was mir jetzt jedoch zu denken gibt ist folgender code

Code:
      CALL  "TIME_TCK"
       RET_VAL:="SYS_TIME"
      L     "SYS_TIME"
      SLD   1                           // wegen fehlerhafter SFC64
      SRD   1                           // wegen fehlerhafter SFC64
      T     "SYS_TIME"

Ich weiß nicht wo das Schlitzohr von Programmierer diese Information her hat und habe auch starke Zweifel ob dies ausreicht. Vielleicht werde ich das Ergebnis dieses Vorgehens einfach mal in einer Steuerung mit der gebräuchlichen Plausibilitätsprüfung überprüfen und die Fehler zählen.

Tritt dieser Effekt bei den neueren CPUs eigentlich auch noch auf?


Siemens IDs zum Thema:

12033733 - SFC 64 (TIME_TCK) bei S7-300 und C7
2623111 - Funktionalität der SFC64 bei unterschiedlichen CPUs


Gruß, Onkel
 
Hallo.

ich muss dieses Thema aus gegebenen Anlass noch einmal nach oben holen.

Ich hatte heute wieder einen Fehler, den ich nicht sofort nachvollziehen konnte. Fakt ist, dass eine Zeitfunktion (sehr einfallsreich programmiert von einem äußerst vorwitzigen PID-Programmierer :???: ), plötzlich nicht mehr ablief. Ich habe auf die Schnelle (hatte keine Zeit) die Funktion durch einen einfachen S5-Timer ersetzt - funktioniert erst einmal. In den betroffenen Anlagen, alle mit den "alten, breiten" S7315-DP2 gibt es hin und wieder nicht nachvollziehbare Störungen. Die Anlagen laufen seit 5 oder 6 Jahren. Ich tippte schon lange auf den Fehler mit der SFC64 bzw. der Firmware, konnte es nur nicht ergründen (21,..-Tagezyklus der Systemzeit). Und heute hatte ich absolut nicht die Zeit dazu.

Kann jemand etwas dazu berichten? Hilft ein Firmware-Update?


Gruß, Onkel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na ja, ich Pogammier nun schon seit 1990 und hab noch nie die Systemzeit bemüht. Zeigt eigentlich, daß es auch andere Wege gibt. Warum ist die also so wichtig, daß man unbedingt eine bekanntermaßen fehlerhafte Funktion nutzt?
 
Hallo Ralle,

es gibt halt immer wieder ganz besonders Schlaue. Ich betreue seit ein paar Jahren die Anlagen, welche alle von demselben Programmierer verbrochen wurden. Immer wieder tauchen neue Probleme auf. Das kotzt mich langsam an.
Meine eigenen Anlagen sehe ich nach der Inbetriebnahme meistens nie wieder, es sei denn zur Wartung.

Siemens-ID12033733 schrieb:
SFC 64 (TIME_TCK) bei S7-300 und C7
FRAGE:
Warum erhalte ich hochsporadisch mit SFC 64 nicht korrekte Werte?
Genauer: Wenn ich z.B. mittels SFC64 zyklisch die Laufzeit zum letzten SFC64-Aufruf auswerte, so erhalte ich hochsporadisch fehlerhafte Werte
ANTWORT:
Der SFC 64 zählt im ms-Raster von 1 bis (2 hoch 31)-1, dann über 0 wieder erneut hoch (Schleifenzähler). Die Information wird in einem Doppelwort parametrierbar hinterlegt.
Leider kommt es hochsporadisch beim Inkrementieren des oberen Wortes des SFC-Zählwertes zu einer nicht korrekten Angabe im Ausgabewert des SFC64. Der Wert des SFC 64 wird also nicht korrekt aktualisiert und weist damit, verglichen mit dem vorherigen Wert, einen sehr deutlich abweichenden Differenzbetrag auf.
Abhilfe:
Prüfen Sie die Werte (z.B. bei einer Differenzmessung) auf Plausibilität – wenn normal Abstände von x ms auftreten, ist ein Differenzwert weit abweichend hiervon zu verwerfen – er beruht auf einem eben beschriebenen inkonsistenten Lesen des Timerwertes.
Betroffen von diesem Verhalten sind alle CPUs der S7-300 sowie alle C7-Geräte:
Bei folgenden Geräten ist das Problem mit dem Betriebssystemstand V1.0.2 behoben:
Für die Kompakt-CPUs CPU 312C, 313C, 313C-2DP, 313C-2PTP, 314C-2DP und 314C-2PTP
Für das neue Gerät C7-635T
Für folgende Geräte gibt es leider keine Updatemöglichkeit.
Für alle Versionen von C7-621, 623, 624, 626, 633 und 634
Für CPU 312IFM, CPU 313, CPU 314, CPU 314IFM, CPU 315, CPU 315F, CPU 315-2DP und CPU 316-2DP
Hinweis:
Das beschriebene Verhalten tritt bei CPU 318-2DP und S7-400 nicht auf, da dort das Doppelwort ununterbrechbar gelesen wird.


Gruß, Onkel
 
Neue Version CPU 313C und 314C - SFC 64

Guten Morgen zusammen,

ich nutze den SFC 64 seit geraumer Zeit und hatte bis letzte Woche keine Probleme damit... Zumindest hat noch kein Kunde angerufen.
Siemens hat die 313C und 314C ne neue Version spendiert. Zuerst hab ich mich über den zusätzliche Arbeitsspeicher gefreut, nun ist mir aber aufgefallen, das anscheinend der alte fehler des SFC 64 auftritt!?
Ich nutze den SFC 64 für eine eigenen Timer. Und hatte das Glück den Fehler direkt sehen zu können. Endwert einer Zeit war so hoch, das nur ein Falscher Wert des SFC 64 schuld sein konnte.

Ich habe mal Siemens angeschrieben, vielleicht gibt es ja ne schnelle Antwort.

Gruß

Christian
 
Zurück
Oben