Step 7 SFC64 - TIME_TCK mit negativem Überlauf

DieBoese0815

Level-1
Beiträge
104
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe eine Herausforderung mit einer 317-4NE12:
Mit der Funktion SFC64-TIME_TCK wird die Systemzeit gelesen und das Ergebnis in eine Variable vom Datentyp TIME geschrieben.
Lt. Handbuch soll die Systemzeit von 0 bis max. 2147483647 ms (T#24D20H….) betragen.
Beim Beobachten der Variable wurde aber eine negative Zeit (T#-10D22H…) gesehen. ( Zahlenüberlauf mit negativem Vorzeichen??)
Im Diagnosepuffer erfolgen keine Fehlereinträge...

Kennt das jemand von euch bzw. die Ursache (und Lösung) :confused:
 
Nein ... lt. Handbuch bewegt sich die Zeit hier im Bereich 0 .. 2^31 -1.
Das wäre dann DWORD-Format und nicht mehr so ganz richtig TIME.

Wofür willst du das wie einsetzen ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast Du tatsächlich den Wert beobachtet, welcher direkt vom SFC64 kommt oder wurde da vielleicht schon weitergerechnet?
Liegt die Variable in TEMP oder in/an einem OUT-Parameter und wird nicht in jedem Zyklus beschrieben?
Wird die Variable vielleicht auch woanders beschrieben (ala Schmiermerker oder überlappende Variablen)?

Harald
 
Bei älteren CPUs gab es nach Hörensagen diesbezüglich mal einen Bug. Ob in den Siemens-FAQs darüber noch etwas zu finden ist, ist fraglich. Ebenso fraglich ist, wann bzw. ob überhaupt der Fehler behoben werden konnte.

Ich hatte vor Jahren das Thema hier schon einmal angesprochen. Einfach mal SFC64 suchen.

Gruß, Onkel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Larry!
Durchflussmengenmessung; ein Fühler gibt immer nach einer Anzahl (Messwert) X einen Impuls ab. Mit der Zeit zwischen den Impulsen errechnet sich die Menge die gerade fliest.
Irgendwo habe ich einmal gelesen dass der SFC 64 bei Siemens wohl nicht immer zuverlässig arbeitet. Haber aber auch gehört es soll durchaus auch negative Werte geben (32bit inkl. Vorzeichen), d.h. bei Überlauf bei Minus anfängt und dann durch die 0 ins Positive geht, bei Überlauf dann Vorzeichen ändert und wieder von vorne anfängt...
Überlege mir grade einen Workaround für den Fall das der SFC64 nicht so zuverlässig ist.
 
Naja ... ich muss sagen, dass ich nicht darauf gekommen wäre, das, was du da machst, mit dem SFC64 zu machen (das ist aber mehr die gedachte Herangehensweise).
Ich selbst arbeite in vergleichbaren Fällen mit der Systemzeit.
Aber dennoch müßtest du es trotzdem hinbekommen können (auch mit dem anscheinend nicht so korrekt arbeitenden SFC64).
Du nimmst von dem Rückgabewert einfach nicht alle Bits sondern vielleicht nur die ersten 24 (z.B.). das könntest du über Maskieren erreichen. Du mußt dann natürlich für die Zeitmessung den Überlauf mit einkalkulieren (also das Startzeit > Endzeit der Messung ist) und dann entsprechend denn Korrekturwert aufaddieren.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Komme zurück zu dem Fall:
Also, es gab wohl mal eine "Unschärfe" bei dem SFC64, und nach einem FW-Update soll der Effekt mit dem negativem Überlauf dann auch nicht mehr auftreten. Nun, gemacht, und abwarten.
Das dumme ist halt der Fehler tritt erst nach 22 Tagen auf, und nur dann wenn die CPU dazwischen mal nicht neu gestartet wurde. Nun heißt es also mal abwarten und Tee trinken...:sm22:
 
..Das dumme ist halt der Fehler tritt erst nach 22 Tagen auf... Nun heißt es also mal abwarten und Tee trinken...:sm22:
Wenn du die Differenz der TIME_TCK-Werte zyklisch ermittelst und aufaddierst und diese auf Plausibilität (z.Bsp. 0..1s) überwachst, kann eigentlich nicht viel passieren. Ich nutze diese Art der Zeitmessung auch häufig in meinen Standardfunktionen, allerdings in Simatic-S7.
 
Würde mich doch glatt interessieren ob die SFC64 abhängigen Bausteine von Siemens (TON und Konsorten) auch so ne schicke Plausibilitätsprüfung haben....
Zumindest wird es von Siemens so empfohlen. Und wenn die nicht gerade mit ihren Support-Seiten herumexperimentieren würden, könnte ich dir auch einen link dazu liefern. Es betrifft ältere 300-er CPUs mit Firmware 1.?
 
Zurück
Oben