INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Sequenz



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

24.01.2010, 00:02 (Dieser Beitrag wurde zuletzt bearbeitet: 24.01.2010 00:09 von IchSelbst.)
Beitrag #11

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Sequenz
' schrieb:Dann (0,1ms*10Durchläufe = 1ms) , oder?
aber wieso 12,95?!
Wenn der erste Durchlauf bei t0=tx=12,95 ist, ist der Rest Null. 12,95 ergibt am Timer-Element 12. In Folge ((tx - t0) div 1000) ist der Rest der Integerdivision also 0, somit wird einmal gezählt (Case mit dem +1). Der nächste Timerwert ist dann 12,95+0,1 = 13,05 => 13. Der Rest der Division ist jetzt also 1 - somit wird nicht gezählt. Das geht jetzt so weiter: 13,15 => 13 => 1 => nicht zählen; 13,25 ...; 13,35 ...; bis 1012,05. Ab Jetzt gilt 1012-12 = 1000 => Rest 0 => Zählen (jetzt Zähler =2). Für 1012,05 bis 1012,95 gilt: 1012-12=1000 => Rest 0 => Zählen bis 10 => Abbruch. Das Ergebnis ist also "10 und 1000". Je nach Dauer der Schleife gibt es also auch die Ergebnisse "10 und 2000", "10 und 3000" usw.

Der nominale Wert von 12,95 ist nur als Muster zu sehen. Wichtig ist, dass der Beginn näher an einer ganzen Millisekunde (das ist die Auflösung des Timer-VIs) liegen muss, als die Schleife dauert. In Wirklichkeit liegt die Dauer der Schleife bei z.B. 0,0001 Millisekunden (µs oder kleiner). Das spielt aber für die theoretische Betrachtung keine Rolle. Dann legt man den Anfang halt bei 12,9995 fest. Dass dem tatsächlich so ist, kannst du folgndermaßen ausprobieren: Einfach das Programm 50mal oder 100mal hintereinander laufen lassen. Da ist bestimmt einmal die Lösung "10 und 1000" dabei.

Einen Extremfall zeigt das Beispiel von Jens G.. Hier dauert die Schleife (aufgrund des Wait-VIs) länger als das Raster des Timers. Somit liefert gemäß Algorithmus "(tx-t0) div 100" jeder Schleifendurchlauf einen anderen Wert (nämlich 0, 10, ...). Da nur bei 0 gezählt wird, dauert das Programm entsprechend lange.

Je nach Schleifendauer gibt es unterschiedliche Ergebnisse. Bei extrem kurzer Schleifendauer ist die Wahrscheinlichkeit (!), dass "10 und 0" herauskommt nahe 100% (aber nicht 100%). Wird die Schleifendauer langsamer, sinkt diese Wahrscheinlichkeit - und die für "10 und x*1000" steigt. Man kann sich sogar so ungünstige Schleifendauern vorstellen, dass die Schleife sehr, sehr lange - also Stunden - braucht. Nämlich dann wenn die Summe der Schleifendauern absolut kein Vielfaches von 1000 ergeben will. Das ist zwar praktisch unwahrscheinlich, theoretisch aber denkbar.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Sequenz wird zweimal durchlaufen mprocket 7 4.927 21.01.2018 18:59
Letzter Beitrag: mprocket
  Sequenz zur Dokumentation, Einfluss auf das Timing TSC 7 4.461 19.10.2016 07:08
Letzter Beitrag: TSC
  Auf Wunsch zusätzliche Sequenz erstellen Rayid 7 5.290 29.09.2016 11:50
Letzter Beitrag: GerdW
  Zeitsteuerung Sequenz LabViewPete 15 8.616 16.12.2015 09:24
Letzter Beitrag: Freddy
  Flache Sequenz/Zustandsautomat C.R. 3 4.719 20.09.2014 16:05
Letzter Beitrag: Lucki
  Struktur/Sequenz zurückspringen Protest 12 10.739 11.02.2014 18:04
Letzter Beitrag: Trinitatis

Gehe zu: