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!
ich habe ein Problem:)und zwar baue ich mit hilfe von LV einen Messaufbau auf in dem ich Messschritte auch zeitlich beenden möchte.
ich habe mir da zwar etwas gebastelt leider bekomem ich Abweichungen und zwar je grösser die verstrichene Zeit ist desto grösser auch die Abweichung.
Ich beschreibe euch mal den Aufbau, bitte fragt mich wenn etwas unklar ist:
Das ganze besteht aus 3 "Schleifen" aussen ist eine While Schleife inner Mitte eine "True & False Schleife" bessergesagt nen CASE und als drittes eine gestapelte Sequenz.
Von ganz aussen gebe ich den Startzeitwert vor ( 00:00:00,000 ). Der Casefall wird durch einen Boolschen Taster gegeben. Nun sind wir ja in der While SChleife und in dem TRUE Fall der Caseschleife in diesem Fall befindet sich die Sequenz mit 2 Sequenzen die gestapelt sind. In der ersten Sequenz warte ich 1ms bevor es in die 2te geht dort addiere ich auf den Zeitwert immer 1ms drauf und vergleiche diese mit der vorgegebenen Messzeit.
Nun die Frage warum bekomme ich da einen Verzug rein?? durch den Vergleich?? oder weil alles halt nicht in 1ms bewältigt werden kann??
Hätte jemand eine Idee wie ich das Problem dann lösen könnte ??
Hier: LVF-Link hab ich mal nen Timer gebastelt. Da kannste dir vielleicht was abgucken.
Ansonsten lad doch mal das VI hoch.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
alles braucht irgendwo Rechenzeit. Auch Vergleiche. Mit Wait 1 ms wartest du zusaetzlich zu allen anderen Sachen die in der Sequenz passieren nochmal 1ms. Die Konsequenz ist, je laenger die While-Schleife laueft, desto mehr Abweichung resultiert zwischen deinem Zeit-wert und deinem Schleifen Zaehler.
Du haettest gerne, dass Beide immer gleich sind nehme ich an.
Bei einer Schleifenzeit von 1 ms kann ich dir mit meinem beschraenktem Wissen glaub ich keinen Tipp geben.
Bei groesseren Zeiten (z.B. 10 ms) koenntest du z.b. die Funktion "wait for ms-multiple" verwenden. Damit bleibst du ueber die Zeit hin exakt im Timing.
Erfordert deine Anwendung wirklich 1 ms? Was hast du denn vor?
17.02.2010, 10:11 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2010 10:43 von jg.)
Hallo LV Gemeinde
Entschuldigung für die späte Reaktion meiner seits. Aber es lage halt Festtage dazwischen
Anbei habe ich mal Bilder des Timers angehangen vieleicht kann mir dort den Fehler bzw. das Problem erklären.
' schrieb:Anbei habe ich mal Bilder des Timers angehangen vieleicht kann mir dort den Fehler bzw. das Problem erklären.
Das wird nix. (Das mit der Zeit, das mit der Antwort schon.)
Erstens:
Du hast hier ein Windows-Betriebsystem. Das ist alles andere als zeitgenau. Die Zeit-While-Schleife mit 1ms Raster wird nicht funktionieren. Die Zeiten werden garantiert größer 1ms sein. Du inkrementierst zwar immer nur um 1ms, vergehen tun aber mindesten 1.5ms - pro Inkrement (=> je länger die Messung dauern soll, desto größer die Abweichung).
Zweitens:
Dein "Inkremental-Timer" misst ja die vergangene Zeit in ms. In dieser Zeit ist aber auch die Zeit enthalten, die außerhalb der Zeit-While-Schleife vergeht. Auch der Code, der zwischen der Zeit-While-Schleife und dem Inkrementieren vergeht, verbraucht Zeit. Diese Zeit möchtest du aber gar nicht messen.
Drittens:
Ein "Inkremental-Timer" hat diverse Nachteile (siehe auch oben). Ungenauigkeiten werden hier nämlich aufaddiert. Besser ist es, sich die Startzeit zu merken, die Endzeit zu berechnen und abzubrechen, wenn die aktuelle Zeit (Now) größer der Endzeit ist. Bei diesem Verfahren werden die Ungenauigkeiten nicht aufaddiert.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
HI ICHSELBST
ja auf die Idee bin ich auch eben gekommen nur die Realisierung braucht noch Unterstützung Hilfe oder einfach noch Zeit
ich wollte mir jetzt die aktuelle zeit angeben lassen die sekunden von da dann zählen und meine vorgegebene Schrittzeit in Sekunden berechen und die dann auf die Startzeit addieren um dann diese mit den abgelaufenen Zeit zu vergleichen.
Zwar blicke ich da nicht ganz durch, aber in Einem bin ich mir ziemlich sicher: daß man das Problem mit dem VI "verstrichene Zeit" ganz simpel und ohne jeden Krampf lösen könnte.
' schrieb:Zwar blicke ich da nicht ganz durch, aber in Einem bin ich mir ziemlich sicher: daß man das Problem mit dem VI "verstrichene Zeit" ganz simpel und ohne jeden Krampf lösen könnte.
Ich kann dir hier in allen Punkten zustimmen - naja, außer dem letzten: "ohne jeden". Das wird sich zeigen, ob "ohne jeden". Schließlich ist das Teil ein Express-VI.
Einen Versuch ist es auf jeden Fall Wert.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).