LabVIEWForum.de - Zwei Spannungen auslesen, einmal oft und einmal seltener

LabVIEWForum.de

Normale Version: Zwei Spannungen auslesen, einmal oft und einmal seltener
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,
ich hab mal wieder ne "blöde" Frage. Hab grad mit dem schonmal geposteten Ringspeicher herumexperimentiert, allerdings komm ich da mit den Datentypen überhaupt nicht klar. Beim Queue-Status lesen bekomme ich als Ausgang immer ein elements / waveform out. Damit komm ich dann allerdings nicht mehr weiter weil dieses "1-D Array von" da irgendwie stört. Bevor ich da ewig rumprobiere, frage ich lieber. Ist das mit den Queues verkehrt oder kann man den Ringspeicher in meinem Fall so bauen?

Andere Möglichkeit: Man kann ja die Sampleanzahl des Signals auslesen, aber ein VI zur Begrenzung der Sampleanzahl scheint es nicht zu geben?! Über das VI "Signalattribut festlegen" geht es ja nicht. Das hatte ich mir gedacht, allerdings belehrte die Hilfe mich eines Besseren. Gibt es da doch irgendwie eine Möglichkeit die Signallänge zu begrenzen und alte Daten zu löschen?

danke fürs Durchlesen.

Gruß
Steffen
Immer wenn's mit Waveforms zu kompliziert wird, dann halt nur mit den Datenarrays arbeiten:

Lv85_img<strike>Spurf_hr...versuch3.vi</strike>

Gruß, Jens

EDIT: Upload gelöscht, enthielt einen Fehler. Neuer Upload s. http://www.LabVIEWforum.de/index.php?s=&am...ost&p=70436
Moin, moin.

Danke für die Vorlage, hab mal grad reingeillert.
Mit der Abtastrate in Verbindung mit dem Faktor (hier 2) bestimme ich die Größe des Arrays. Die Null stellt den Anfangszustand bei jedem Programmstart dar. Das Verschieben und Einfügen verstehe ich auch, nur das Umkehren will mir noch nicht so recht in den Sinn.
Obwohl, ist das vllt. um das Signal hinten anzuhängen anstatt vorne? Wenn ja dann ist bei mir während des Schreibens der Groschen gefallen. Falls nicht, muss ich doch nochmal nachdenken.
Jetzt wird dann alles im Array gelöscht was an der 2001. Stelle steht, stell ich den Faktor auf 3 dann halt 3001. Stelle. Somit hab ich 2s Signalverlauf bei 1kS/s Abtastrate. Errechnet wird die Geschwindigkeit aber trotzdem bei jedem Schleifendurchlauf, genial.

Naja, dann muss ich jetzt mal schauen ob die Erfassung des Sensors klappt. Der schickt komischerweise nur 0,04V Signal raus. Dann noch ein paar Sicherungen einbauen, damit nix schiefgehen kann. Ich bin gespannt.

Danke nochmal jedenfalls, du warst mir eine sehr große Hilfe. Yourock

gruß
Steffen
' schrieb:Obwohl, ist das vllt. um das Signal hinten anzuhängen anstatt vorne?
Genau richtig erkannt! Ich will immer die neuen Werte hinten anhängen. Dazu muss natürlich das Array vorher nach vorne verschoben werden. Nachdem es dafür keine eingebaute Funktion in LV gibt, habe ich getrickst - Array drehen, hinterer Teil nach vorne (also eigentlich vorderer Teil nach hinten), wieder drehen. Wobei mir gerade auffällt, ich habe im letzten Upload noch einen Fehler eingebaut.

Ich lade mal eine korregierte Version hoch.
Lv85_img[attachment=17608]

Gruß, Jens
Na dann bin ich ja doch nicht so blöd wie ich ausschau!Rolleyes
Mal schauen ob ich den Fehler von allein sehe, allerdings wird das erst nach Ostern.

Vielen Dank!

gruß
Steffen
Der Fehler war, dass ich im ersten Upload erst am Anfang die neuen Daten eingefügt habe und dann wieder das Array gedreht habe. Somit wurden die neuen Daten aber in der falschen Abfolge eingefügt.
Jetzt sieht es so aus: Array drehen -- hinterer Teil nach vorne -- Array drehen -- neue Daten (in korrekter Reihenfolge) am Ende einfügen.

Gruß, Jens
Prinzipiell finde ich die Benutzung einer Queue als Ringpuffer, insbesondere seit dem Lossy Enqueue von 8.6, ein schönes und sinnvolles Pattern.
Wenn wie hier bockweise ersetzt werden soll, ist allerdings die "klassische" Variante Array in Schieberegister schon sinnvoller.

Warum Du allerdings die Arrays dauernd drehts verstehe ich nicht ganz. Wink

[attachment=17612]
' schrieb:Warum Du allerdings die Arrays dauernd drehts verstehe ich nicht ganz. Wink
Wall, auf die Idee, mal eine negative Zahl an "Rotate 1D Array" anzuschließen, war ich auf die Schnelle nicht gekommen. Sehr gut, diese Lösung! Wobei ich meine, mal irgendwann auf LAVA gelesen zu haben, dass so einige Array-Funktionen wie z.B. "Reverse Array" gar keine neue Kopie im Speicher erstellen, weswegen diese Funktion auch bei großen Arrays quasi keine Zeit kostet. Dein Screenshot impliziert zwar etwas anderes, ist jetzt aber egal...

Gruß, Jens
So, ich mal wieder. Das mit den Arrays hab ich mal angepasst, ob es so richtig ist weiß ich allerdings nicht. Irgendwie kommt da immer Null raus bei der Geschwindigkeit.

Den Regler hab ich auch mal versetzt. Mir ist aufgefallen dass ich ja den Abstand auf Null regeln will und nicht die Servos auf Neutralstellung. Was mich allerdings noch etwas fragend dastehen lässt, ist es bei der Berechnung des Spannungswertes im Regler nicht so, dass ich die Anteile zum Ist-Wert dazurechnen muss und nicht zum Sollwert?

gruß
Steffen

Sorry, ich weiß nicht so recht ob das hierrein passt oder ob ich da wieder einen extra Thread brauch.

Lv86_img
Seiten: 1 2
Referenz-URLs