Step 7 PCS7 Ungenauigkeit bei Zeitmessung

Zuviel Werbung?
-> Hier kostenlos registrieren
Mit SFC64 gibt es eine fortlaufenden Zähler der von der SPS-Zeit nicht beeinflusst wird, es ist nur der Überlauf zu beachten. Angeblich hatten einige CPUs früher mal Probleme mit diesem SFC, weiß nicht ob das noch aktuell ist.

Das bei CFC mit einem Zykluszähler in DINT zu realisieren und diesen dann wieder in Sekunden zurückzurechnen ist auch nicht ganz so einfach, da es ja durchaus sein kann, dass jemand den Baustein während des laufenden CPU in eine andere Ablaufgruppe verschiebt, und dann sollten bereits laufende Timer auch korrekt weiterlaufen. Da müssten schon zwei Zähler her, z.B. einer auf ms und ein weiterer auf s normiert.
Darum ist das mit dem SFC64 gar keine schlechte Idee. Wenn da mehr als 24 Tage in ms-Auflösung benötigt werden, sind aber auch zwei Zähler notwendig. Kommt letztenendes also aufs gleiche raus.
 
Ich habe zum Test beide Varianten d.h.:

1. Zählen von OB Zyklen
2. SFC64 TIME_TCK()

in einen FB gepackt und auf einer S7-416 am laufen.

Die Zeiterfassung beider Methoden läuft absolut synchron. Jede Lösung hat natürlich ihre Vor- und Nachteile. Das wichtigste Kriterium, die Genauigkeit, ist offensichtlich in beiden Fällen gewährleistet.

Ich warte noch auf eine Erklärung von SIEMENS bezüglich der Ungenauigkeit des TimerP Bausteins.
 
Mit SFC64 gibt es eine fortlaufenden Zähler der von der SPS-Zeit nicht beeinflusst wird, es ist nur der Überlauf zu beachten. Angeblich hatten einige CPUs früher mal Probleme mit diesem SFC, weiß nicht ob das noch aktuell ist..
Das ist sehr lange her.

.. Das bei CFC mit einem Zykluszähler in DINT zu realisieren und diesen dann wieder in Sekunden zurückzurechnen ist auch nicht ganz so einfach, da es ja durchaus sein kann, dass jemand den Baustein während des laufenden CPU in eine andere Ablaufgruppe verschiebt, und dann sollten bereits laufende Timer auch korrekt weiterlaufen...
Wenn man jetzt den DINT-Zähler nicht um eine feste "1" erhöht, sondern variabel um den Aufrufintervall des jeweiligen OB in [ms], umgeht man diese Probleme. Der Aufrufintervall des OBs steht in den Lokaldaten. Geht so etwas auch in PCS7?
 
Wenn Du den Dint Zaehler nicht um eins erhöhSt sondern um 10 oder 100 ist der Zaehler natuerlich auch eher am Anschlag... Deshalb die Aussage von Thomas, es ist nicht ganz trivial, alle eventualitaeten zu berücksichtigen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist sehr lange her.

Wenn man jetzt den DINT-Zähler nicht um eine feste "1" erhöht, sondern variabel um den Aufrufintervall des jeweiligen OB in [ms], umgeht man diese Probleme. Der Aufrufintervall des OBs steht in den Lokaldaten. Geht so etwas auch in PCS7?

Ja, jeder zeitabhängige Baustein hat einen Eingang SAMPLE_T, in Real, der das Aufrufintervall in Sekunden angibt.
 
Zurück
Oben