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!
02.08.2010, 10:42 (Dieser Beitrag wurde zuletzt bearbeitet: 02.08.2010 10:44 von dimitri84.)
' schrieb:Die Multiplikation kann das Integer Array Inplace benützen. Mit der Konversion wird explizit ein weiteres Array angelegt. Das funktioniert aber nur bei LabVIEW Built-in Nodes. Die können und probieren Inplaceness zu verwenden wenn immer möglich.
Ich hab's auch schon aus dem Mund eines NI-Mitarbeiters gehört, aber leider kein Tonbandgerät mitlaufen lassen
Zitat:Ungläubig bin ich schon deshalb, weile eine Inplace-Struktur mir bisher noch niemals Schhnelligkeit gebracht hat, sondern es geht ausschließlich um die Einsparung von Speicherplatz.
Genau das. Dass die inplace Dinger weniger performant sind, ist kein Geheimnis. Es geht auch nur um den Speicher, was anderes hab ich nicht gesagt.
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
' schrieb:Und was LV-Professional nookkie sagt ist falsch: Die Wait-Funktion blockiert nicht den "gesamten Programmablauf". Die Wartezeit wird im Gegenteil dazu genutzt, daß alles getan wird, was sich in anderen Teilen des Programmes noch erledigen läßt.
Blockieren würde das Wait nur dann, wenn das ganze Programm in eine Sequenzstruktur eingebettet wäre - was leider Anfänger sehr gern tun, da sie dem Datenflußprinzip nicht so recht trauen. Während das Programm in einer Sequenz wartet, werden alle anderen Sequenzen blockiert.
Ich glaub ich hab mich schlecht ausgedrückt, was ich sagen wollte ist, dass diese Funktion zum Ausführen genau 100ms dauert.
snip09 Wenn ich die Schleife 10 mal ausführe, dauert die Ausführung des Programms ja auch wundersame weise 1 Sekunde.
Und ich glaube nicht, dass das die ursprünglich beabsichtigte Funktion war.
lG nookie
Intuition ist die Fähigkeit, die Lage in sekundenschnelle falsch einzuschätzen.
Das wird wohl an der Messtechnil liegen. Zwar hast Du ne Menge Uhren um Programm, aber ich sehe keine Konstellation, daß man damit die Dauer der Schleifenausführung zuverlässig messen kann. Du solltest dazu jede Uhr in eine eigene Sequenz packen, wo nichts anderes drin ist. Also: 1.Seq: 1.Uhr; 2.Sequ: Schleife ohne Uhr, 3.Sequ: 2.Uhr und Differenzbildung 2.U.-1.U, usw.
' schrieb:Habs mal so gemacht, aber ich habe immernoch 7 ms fehler, bei 5200 ms eingestellt...
Sehr gutes Ergebnis, in der Hife steht: "Die Fehlertoleranz der Funktion Warten beträgt +-1ms." Macht bei 52 Aufrufen max. 52ms, und nach dem Fehlerfortplanzungsgesetz ist mit einem mittleren Fehler von Sqrt(52) = 7ms zu rechnen. Also ist Dein Beispiel eine ausgezeichnete Demonstration des Fehlerfortpflanzungsgesetzes, besser gehts gar nicht! (den Vorschlag mit dem Metronom mache ich aber jetzt nicht noch einmal, denn da ist auch ein Trick dabei, den ich jetzt nicht Lust habe zu erklären)
Anzeige
02.08.2010, 14:16 (Dieser Beitrag wurde zuletzt bearbeitet: 02.08.2010 14:27 von jak888.)
Jetzt werd ich das wohl so lassen müssen...
Aber der Trick mit dem Metronom würde mich doch interessieren... kannst ihn ja mal posten, wenn du Zeit hast...
Edit: ...und Lust.
Im übrigen ist mir gerade aufgefallen: wenn ich das 48 Stunden laufen lasse, dann habe ich einen Fehler von fast 22 Minuten... lol...
Edit(2): oder auch 2 Minuten...
Edit(3): oder auch 1,3 sekunden...
Ach, ich weiß doch auch nicht, was. Wird wohl Zeit, dass die Uni wieder anfängt. Das Hirn weicht langsam auf... Scheinbar...
"Good judgement comes from experience, experience comes from bad judgement."
Beim Metronom kommt der erste Tic zufällig in Bezug auf den Start. Also bei Verzögerung 100ms kommt der Tic irgendwann zwischen 0 und 100ms. Damit das beim ersten Schleifendurchgang nicht passiert, sollte man die Schleife nicht irgendwann starten, sondern genau dann, wenn gerade ein 100ms Tic stattgefunden hat. Z.B so:
Um jetzt mal Niki Laudas Aussage von gestern zu entsprechen: Ja, aber:
ich hab die Schleife ja so, oder so nur um die Zeit zwischen dem drücken des Tasters und dem Schalten eines Relais zu steuern. Wenn ich das jetzt so mache, wie von dir beschrieben bleibt der Fehler ja nach wie vor bestehen. Ob er jetzt in der SChleife besteht, oder davor, ist dabei egal.
"Good judgement comes from experience, experience comes from bad judgement."
So, hab jetzt einen Workaround gefunden.
Dabei macht er manchmal 1 ms Fehler, wegen der Gleitkommaoperationen, aber 1ms ist im Vergleich zu der Schaltzeit eines Relais wohl egal.
Danke für alle Hilfe
"Good judgement comes from experience, experience comes from bad judgement."