-> Hier kostenlos registrieren
Ich habe mir vor einigen Jahren einen Betriebstundenzähler gebastelt für Aggregate z.B. Motoren aber auch um z.Bsp. Laufzeiten von Prozessen zu überwachen. Dieser gibt einmal die Zeit im Timeformat aus und die reinen Stunden als DINT. Dies habe ich nach der oft empfohlen Methode des Aufsummieren der OB1-Prev-Cycletime getan, ich denke die meisten wissen was ich meine.
Nun habe ich durch einen Zufall bemerkt
das die Zeit mit der wirklich vergangenen Zeit nicht übereinstimmt.Das ganze mit Stoppuhr verifiziert und ja, mein Betriebsstundenzähler geht nach sprich läuft langsamer.Warum ist dies nicht eher so aufgefallen?!Nun, wir setzen die ET200SP CPUs ein und bis vor Kurzem waren Zykluszeiten von 10-15ms normal an unseren Anlagen.Mit den letzten Upgrades sind die CPUs deutlich schneller geworden und die Zykluszeit ist auf 1ms gesunken. Da die Zykluszeit in MS ganzzahlig aufsummiert wird und diese nie genau 1 ist sondern eher einige Microsekunden länger also so 1,023 oder so(kann man ja beobachten in Online&Diagnose) "fehlt" dort natürlich etwas in der Summe und das ist dann so viel das tatsächlich pro Minute ca. 2s fehlen.
Setzt man die Zykluszeit mal auf mindestens 10ms in der Hardwarekonfiguration wird der Fehler kleiner, ungefähr 1s in 5min. Daher ist er früher nicht direkt aufgefallen.
Ich habe mir nun einen neuen Baustein geschrieben, der intern mit der TONR-Funktion einfach die Zeit akkumuliert im LTime Format.Damit sind theoretisch über 200 Jahre möglich. Die Stunden rechne ich mir einfach durch Umwandlung und Division aus, da die Zeit im LTime quasi in Nanosekunden vorliegt.
Habt ihr das Phänomen schon bemerkt?Welche Lösungen habt ihr gefunden?Das würde mich interessieren.
Nun habe ich durch einen Zufall bemerkt
das die Zeit mit der wirklich vergangenen Zeit nicht übereinstimmt.Das ganze mit Stoppuhr verifiziert und ja, mein Betriebsstundenzähler geht nach sprich läuft langsamer.Warum ist dies nicht eher so aufgefallen?!Nun, wir setzen die ET200SP CPUs ein und bis vor Kurzem waren Zykluszeiten von 10-15ms normal an unseren Anlagen.Mit den letzten Upgrades sind die CPUs deutlich schneller geworden und die Zykluszeit ist auf 1ms gesunken. Da die Zykluszeit in MS ganzzahlig aufsummiert wird und diese nie genau 1 ist sondern eher einige Microsekunden länger also so 1,023 oder so(kann man ja beobachten in Online&Diagnose) "fehlt" dort natürlich etwas in der Summe und das ist dann so viel das tatsächlich pro Minute ca. 2s fehlen.
Setzt man die Zykluszeit mal auf mindestens 10ms in der Hardwarekonfiguration wird der Fehler kleiner, ungefähr 1s in 5min. Daher ist er früher nicht direkt aufgefallen.
Ich habe mir nun einen neuen Baustein geschrieben, der intern mit der TONR-Funktion einfach die Zeit akkumuliert im LTime Format.Damit sind theoretisch über 200 Jahre möglich. Die Stunden rechne ich mir einfach durch Umwandlung und Division aus, da die Zeit im LTime quasi in Nanosekunden vorliegt.
Habt ihr das Phänomen schon bemerkt?Welche Lösungen habt ihr gefunden?Das würde mich interessieren.