24.01.2010, 00:02
' schrieb:Dann (0,1ms*10Durchläufe = 1ms) , oder?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.
aber wieso 12,95?!
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.