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 schreibe gerade an einer Arbeit bei der es um die vermessung der Bahngenauigkeit von zwei kooperierenden Industrierobotern geht.
Also ich setzte 3 LVDT Messaufnehmer ein (Nullage 2,5V) und das DAQPad-6015.
Jetzt habe ich folgendes Problem:
Ich kann die Roboter nicht exakt auf 50mm zueinander positionieren so das ich genau 2,5 Volt angezeigt bekomme. Es wäre aber von großem Vorteil, wenn ich LabVIEW bzw. meinem VI klar machen könnte das, die Roboter so wie sie jetzt stehen, die Nullstellung ist und das ich ab jetzt, d.h. Eingangsspannung 0V, alle positiven wie auch negativen Spannungen messe.
Ich habe mal mein VI angehängt, da ich, wenn es möglich wäre gerne dies auch weiterhin benutzen möchte. Und damit Ihr sehen könnte wie ich dieses Aufgebaut habe.
Für Ratschläge, Tipps und Lösungen bedanke ich mich bei euch im Voraus!
Wenn ich es richtig verstanden habe, musst du einen zusätzlichen Button für die Nullpositionsbestimmung einbauen. Wenn die Roboter sich in der Nullposition befinden auf diesen Button klicken und die aktuelle Spannung messen, die z.B. in lokale Variablen abgespeichert wird. Diese lokalen Variablen können dann getrennt für jeden Kanal statt 2,5 für alle Kanäle verwendet werden.
Ich versuche das Problem nochmals ein wenig genauer zu beschreiben!
Also die Wegaufnehmer haben einen Abtastbereich von 0-100mm! Jetzt hat der Wegaufnehmer bei 50mm die Mitte, und ich bekomme in meinem VI auf den Graphen 2,5V Eingangsspannung! Jetzt kann ich die Roboter aber nicht genau so positionieren das diese genau 50mm zueinander stehen, sonst könnte ich 2,5V abziehen - und ich wäre bei 0V Eingangsspannung. Sondern es ist vielmehr so das die Roboter ca. 50 mm zueinander ausgerichtet werden, d.h. ich habe vielleicht 2,723 V eingansspannung, dann müsste ich im meinem VI die Konstante 2,5V die ich Abziehe durch 2,723 ersetzen, damit ich wieder bei Null Volt wäre. Wenn jetzt aber der Roboter aber beim zweten versuch weiter auseinander steht dann muss ich mein VI wieder ändern...................
Desween bin ich auf der Suche nach einer Funktion die ich während der Messung anwählen kann - um meinem VI klar zumachen das jetzt z.B. die 53mm abstand zwischen den Robotern, die neue Nullage ist. So kann ich bequem und ohne große Fehler alle positiven bzw. negativen Spannungsänderungen messen.
Ich hoffe das ist jetzt einwenig verständlicher, bissel schwer so ein Versuch verständlich auszudrücken.
Ich habe hier dein VI so umprogrammiert, wie ich es gemeint habe.
Es kann aber sein, dass du die Event-Structure in eine andere While-Schleife packen sollst, damit deine Messung ohne 20 ms Wartezeit ausgeführt werden kann.
Sieht gut aus bei Eugens Programm. Eine Winzigkeit würde ich noch ändern: Bei der Konvertierung einer dynamischen Array-Variablen in eine Variable wird nur der letzte Wert des Array genommen. Eine Mittelwertbildung aller Array-Werte würde die Genauigkeit erhöhen. Der Roboter wird doch hoffentlich in dieser Zeit stillhalten.
Edit: im Nachhinein Bild hinzugefügt
Ja, ich habe mir noch gedacht, dass man die Event-Structure lieber mit Case-Structure ersetzt, dann gibt es keine Wartezeit in der While-Schleife.
Mittelwertbildung wäre gewünscht.
@Eugen
Ich wundere mich sowieso über die Datenaufnahme: Es werden 100 Daten erfasst, dann werden die Daten in einer unbestimmt langen Zeit verarbeitet, und erst dann wird die Datenerfassung wieder neu angestoßen. Es fehlen also Werte zwischen den je 100 Punkten, und jede Wartezeit bei der Auswertung vergrößert das Datenloch.
Besser wäre doch eine kontinuierliche Datenerfassung und die Daten werden 100-Stückweise ausgelesen. Dann würden auch die 20ms Wartezeit egal sein, denn Datenerfassung und Auswertung finden nicht mehr hintereiander, sondern parallel statt, und die Ansammlung von neuen 100 Werten dauert sowieso 100ms.
Aber das Datenloch zwischen den Messungen war ja nicht die Frage, und schlafende Hunde sollte man nicht wecken
@ Lucki
Ja die Mittelwertbildung über 100 ms wäre hier wirklich nützlich, da stimme ich völlig zu. Aber die Wartezeit der Eventstructure ist völlig überflüssig hier, besonders weil man es mit einer Case-Structure umgehen kann. Das habe ich damit gemeint.
@Tobse
Zur Mittelwertbildung einfach einen Schieberegister in die Whileschleife mit Addition hinzufügen und bei jedem 100.ten Durchlauf das Erbebnis durch 100 teilen.
vielen dank für die vielen Tipps!
Ich bin leider labView anfänger und kann mit ein paar sachen gar nichts anfangen, da ich mich erst ca. 2-3 wochen mit dem programm befasse - aber so wie ich raufgehört habe ist es relativ egal wegen der wartezeit - da es für mich einfacher ist wenn ich die roboter so programmiere das sie erst 1sec nach start des programms losfahren sollen. Also: ich starte mein VI und anschließend starte ich das roboter programm - dann hat sich die Nullage schon eingestellt denk ich. 20ms ist ja eigendlich ziehmlich kurz!
@Eugen
ich werde dein Programm heute mal ausprobieren und schauen ob es geht!
Auf alle Fälle mal vielen Dank- das du dir die zeit genommen hast mir zu helfen! Ich werde mich heute abend nochmals melden!