Step 7 Verständnisfrage (Anfängerniveau) zu Timern

Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
ich bin noch ein Anfänger und habe mal drei kleine Verständnisfragen zu Timern.

1. Ich verwende in einem Funktionsbaustein einen Timer (TOF, z.B. 500 ms). Dabei fiel mir auf, dass dieser Timer nicht exakt die Zeit einhält auf die er eingestellt ist, sondern immer etwas länger benötigt. Ich erkläre mir dieses Verhalten damit, dass die Zeit des Timers zwar abgelaufen ist, aber dies erst später beim zyklischen Durchlauf im Programm festgestellt wird. Damit müsste die Abweichung durch eine größere Zykluszeit auch größer werden.
Meine Frage ist, ob ich mit dieser Behauptung richtig liege oder nicht! Demzufolge wäre die Genauigkeit aller Timer immer von der Zykluszeit des Programms abhängig.

2. Wenn ich nun aber den OB35 nehmen würde und dieser einen Interrupt im eigentlichen Ablauf des Programms auslöst, dann müsste dieser meiner Meinung nach genauer bzw. unabhängig von der vorliegenden Zykluszeit sein.

3. Wie verhalten sich denn die Taktmerker, die man in der Hardwarekonfiguration einstellen kann? Diese sind doch wahrscheinlich auch unabhängig von der Zykluszeit oder?

Vielen Dank für eure Antworten und Erklärungen!
Gruß,
Dennis
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo rostiger Nagel,

danke für deine schnelle Antwort. Ich habe einfach einen Sekundentakt genommen und diesen Aussummiert. Anschließend brauchte ich nur noch die Summation mit der Uhrzeit vergleichen. Dabei stellte sich heraus das es eine immer größer werdende Abweichung gibt.

Dann stimmt die Behauptung von Punkt 1 und die von mir vermutete Ursache also?! Und sind die Punkte 2 bis 3 auch korrekt?

Gruß
 
Deine Aussage ist richtig.
Solange die Abfrage der Timer im "normalen" Zyklus erfolgt geht natürlich die Zykluszeit ein.

Wenn du es genauer brauchst, dann musst du das, wie du auch schreibst, im OB35 machen.
Allerdings musst du dann auch das Prozessabbild der Ausgänge aktualisieren.

GrußDieter
 
Danke für eure schnellen Antworten,

Eine IEC Timer ist sicherlich Zykluszeit abhängig,
aber verrate mal woran du das festmachst?

Ich habe einfach einen Takt von einer Sekunde erstellt und diesen aufsummiert. Die Summenbildung habe ich anschließend nur noch mit einer Uhr vergleichen brauchen. Dabei stellte sich dann heraus, dass es zu einer immer größeren Abweichung kommt.

Dann stimmt also meine erste Behauptung und auch die Ursache für dieses Verhalten. Könntet ihr noch was zu der zweiten und dritten Aussage sagen/schreiben.

Danke!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jep, Blockmove hat recht.

Grundsätzlich folgen die Timer selbst nicht dem OB-Zyklus...
1. S5-Timer sind als Hardware implementiert.
2. IEC-Timer verwenden mit dem SFC64 die Systemzeit, die ebenfalls Zyklusunabhängig ist.
3. Bei den Taktmerkern bin ich mir nicht sicher (vor allem wann sie geschrieben werden).
Ob dies auch während das Zyklus passiert oder nur am Anfang/Ende. (Müsste man testen)

Die Genauigkeit der Timer selbst ist also eigentlich Zyklusunabhängig. (Man muss hier noch vermerken dass
S5-Timer aufgrund des Datenformat nur bestimmte Zeitwerte schaffen)

ABER: Der Vergleich bzw. die Reaktion auf den Timer bzw. Taktmerker ist immer Zyklusabhängig.

Genauer kannst du es nur mit einen Zeit-OB machen. Hier ist aber auch anzumerken dass dort zwar der Vergleich des Zeitwerts (da Interrupt) fast unverzögert passiert, ein Starten bzw. Setzen des Timers aber immer noch in irgendeiner Form zyklusabhängig ist (Zeit-OB-Zyklus).

Und als letztes muss die Reaktion auf die Timer-Auswertung ebenfalls unverzögert erfolgen.

Wie du siehst ist die "perfekte Zeit" recht schwierig oder nur mit Einschnittten zu schaffen.


EDIT: Geht es dir hier nur um eine Verständisfrage oder versuchst du etwas bestimmtes zu erreichen dass eine hohe zeitliche Präzision braucht?
EDIT2: Korrekturen... @hucki (1 below): Der Duden sagt ganz klar nein! :cool:
 
Zuletzt bearbeitet:
Hallo Ronin,
danke für die ausführliche Antwort. Damit wird es für mich verständlich!!

Jep, Blockmove hat recht.
EDIT: Geht es dir hier nur um eine Verständisfrage oder versuchst du etwas bestimmtes zu erreichen dass eine hohe zeitliche Präzision braucht?

Nein, ich möchte lediglich wissen warum diese Verzögerung auftritt, damit ich dies für zukünftige Projekte im Hinterkopf habe! ;)

Vielen Dank nochmal an alle!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die CPU-Taktmerker ändern sich asynchron zum OB1-Zyklus. Exakt nach der halben dokumentierten Periodendauer.

Code:
//Warteschleife bis Taktmerker ist 0
WT0:  U     "AS_Takt_10Hz"
      SPB   WT0


//Warteschleife bis Taktmerker ist 1
WT1:  U     "AS_Takt_10Hz"
      SPBN  WT1

Harald
 
Die CPU-Taktmerker ändern sich asynchron zum OB1-Zyklus. Exakt nach der halben dokumentierten Periodendauer.

Verwendet man Taktmerker an voneinander abhängigen Stellen, dann ist es zu empfehlen die Taktmerker am Zyklusbeginn bzw. vor der ersten Verwendung
in ein anderes Merker- oder Datenbyte zu transferieren und mit diesem zu arbeiten.

Die "normalen" Timer arbeiten - meine ich zumindest - auch asynchron.
Allerdings hat Siemens an der Ecke auch schon mal geändert, deshalb und weil ich fast ausschliesslich IEC-Timer verwende, bin ich mir da bei der Abfrage nicht ganz sicher.

Gruß
Dieter
 
.
Ich denke, das Thema ist nun wohl
ausreichend beantwortet worden.

Deswegen mal ganz nebenbei:
Ist hier jemand mit einem
Zweit-Account unterwegs oder
sind hier Beiträge gelöscht worden ?

aus Beitrag #6:
...
EDIT2: Korrekturen... @hucki: Der Duden sagt ganz klar nein!

Wie kann Ronin auf einen Einwand
von hucki reagieren, wenn der erst später
an diesem Thema teilnimmt?

Hier der Beitrag #7 von hucki:
http://www.sps-forum.de/simatic/68567-verstaendnisfrage-anfaengerniveau-zu-timern.html#post475280

:confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein,
Ronin hatte in seinem Beitrag einen Schreibfehler, den ich nicht als solchen erkannte, sondern dachte, es wäre eine österreichische Mundart (siehe meinen ersten Beitrag in diesem Thread).

Offensichtlich hat Ronin diesen Fehler korrigiert und dann auch bei der Bemerkung zu diesem EDIT gleich noch nachträglich mit auf meine Frage reagiert, obwohl der Beitrag natürlich zeitlich eher als meine Nachfrage ist.
Vlt. sollte er die Bemerkung dort raus- und lieber in den Lacher-Beitrag aufnehmen, damit es nicht so verwirrt.
 
Zuletzt bearbeitet:
Du ziehst aber schon ganz interessante Schlüsse....

In Beitrag #6 hab ich zur Frage geantwortet, in Beitrag #7 hat mich dann hucki auf einen Rechtschreibfehler aufmerksam gemacht.
Also hab ich Betrag #6 editiert (korrigiert).
Dort hab ich dann auch gleich eine kleine Antwort für hucki reingeschrieben damit ich nicht extra eine Antwort schreiben muss und das Thema nicht unnötig zu-mülle.
Mach ich eigentlich öfters so damit der Thread nicht unnötig lang wird und in "belanglosem" Geschwafel untergeht. Meistens kommen die Leut dabei mit. :p

Siehst du, keine Zauberei oder Zeitreisen dahinter... :cool:
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Du ziehst aber schon ganz interessante Schlüsse....

In Beitrag #6 hab ich zur Frage geantwortet, in Beitrag #7 hat mich dann hucki auf einen Rechtschreibfehler aufmerksam gemacht.
Also hab ich Betrag #6 editiert (korrigiert).
Dort hab ich dann auch gleich eine kleine Antwort für hucki reingeschrieben damit ich nicht extra eine Antwort schreiben muss und das Thema nicht unnötig zu-mülle.
Mach ich eigentlich öfters so damit der Thread nicht unnötig lang wird und in "belanglosem" Geschwafel untergeht. Meistens kommen die Leut dabei mit. :p

Siehst du, keine Zauberei oder Zeitreisen dahinter... :cool:


Na, dann hat sich das nun ja (auch für andere) aufgeklärt :s1:
 
Zurück
Oben