Probleme mit Drehgeber - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Probleme mit Drehgeber (/Thread-Probleme-mit-Drehgeber) |
Probleme mit Drehgeber - Ben187ny - 29.06.2012 07:40 Guten Morgen, bin gerade dabei ein kleines Programm für ein Messfahrzeug zu schreiben. Bei dem Messfahrzeug gibt es einen Drehgeber der den Weg aufnehmen soll und einen induktiven Sensor der einen Abstand messen soll. Das programm sollte so lange den Weg aufnehmen dieser >= 50mm ist, wenn das geschehen ist soll der induktive Sensor einen Abstand messen. Möchte das so oft wiederholen bis ich z.b. Stopp drücke. Benutze übrigens von Meilhaus das RedLab 1608 mit LabVIEW 2011. Im Anhang habe ich noch ein kleines Struktogramm und das vi. Mein Problem liegt darin das ich nicht weiss, wie ich den vom Drehgeber ausgegebenen Wert aufsummiere(Bereche erst:Inkremente*pi*40mm(Raddurchmesser)/1024(Inkremente pro Umdrehung). das ergibt dann ca. einen Wert von 0,12mm pro Inkrement des Drehgebers. Jetzt soll er wie gesagt diesen Weg aufsummieren und wenn dieser größer ist als 50 mm soll der induktive Sensor einen Abstandswert abfragen und in eine Datei schreiben. RE: Probleme mit Drehgeber - M Nussbaumer - 29.06.2012 07:56 (29.06.2012 07:40 )Ben187ny schrieb: Guten Morgen, Hallo Ben Wenn ich dich richtig verstanden habe möchtest du deine Array-Elemente zusammen addieren? Wenn ja gibt es die Funktion "Add Array Elements" in der Palette "Numeric" Ansonsten passt dein Ablaufdiagramm und dein Blockdiagram nicht wirklich zusammen. Wieso verwendest du zwei While-Schleifen? Nach deinem Ablaufdiagramm müsste doch die Erfassung erst in das File geschrieben werden sobald Wert >= 50mm? Theoretisch müsste dann das Ganze in einen True/False Case für das gewünschte Verhalten. Dein Stopp-Knopf wird nicht an der von dir gewünschten Stelle ausgelesen, sondern sobald die Schleife gestartet wird -> Think Dataflow. Die State-Machine Architektur würde sich für so einen Flow-Chart recht gut anbieten Hoffe das hilft dir weiter! Gruss Marc RE: Probleme mit Drehgeber - Ben187ny - 29.06.2012 08:10 Hi, erstmal danke für die Antwort. Ja hast recht das die Messwerte erst geschrieben werden sollen wenn der Weg =>50mm ist. Habe leider erst ein paar Tage erfahrung mit LabView. Die innere While-Schleife lass ich also so wie sie ist und die äußere muss zu einem True/False Case werden, welches startet wenn der Weg => 50 mm ist oder? Muss ich dann noch eine Schleife darum machen? Will es ja so oft ausführen bis ich es durch Knopfdruck oder sonst was beende. Und noch ne Frage ich möchte, dass nachdem er die 50mm hat und er den Abstand genommen hat, dass er den Weg wieder auf 0 mm setzt. Wie würde ich das am besten machen? Vielen Dank schon mal Mfg Benny RE: Probleme mit Drehgeber - GerdW - 29.06.2012 08:13 Hallo Ben, Zitat:Mein Problem liegt darin das ich nicht weiss, wie ich den vom Drehgeber ausgegebenen Wert aufsummiereVerständnisfrage: Springt der Counter immer wieder auf Null zurück oder zählt er die Inkremente stur hoch? Nur im ersten Fall müsstest du aufsummieren. Im zweiten Fall musst du einfach nur die Inkremente in einen Weg umrechnen und fertig ist... Verständnisfrage: Warum fragst du mehr als einen Ctr-Wert pro Aufruf ab? Willst du nicht eher immer den gerade aktuellen Wert haben? Tipps: - Den Messkanal ("CI Count Edges" und "AI Voltage") nur einmal vor der Schleife initialisieren reicht aus... Edit: Vielleicht führt eben dieses wiederholte Initialisieren des Counters zu der irrigen Annahme, die CTR-Werte aufsummieren zu müssen! - Deine Konstanten einmal verrechnen (pi*40/1024) und mit dem Zwischenwert weiterrechnen sieht eleganter aus. (Der LV-Compiler ist recht gut geworden und sollte solche Operationen selbst zusammenfassen...) - Ich sehe kein Schleifentiming. Dies kann aber in den bei mir nicht installierten ULx-Funktionen integriert sein... RE: Probleme mit Drehgeber - Ben187ny - 29.06.2012 08:35 Hi, habe jetzt erstmal die zweite Schleife raus genommen. Hätte eigentlich gedacht das der CTR die Inkremente aufsummiert, aber es kommt hinten immer nur 0,12 raus, also für ein inkrement. Habe jetzt nochmal das aufsummieren Vi rein gepackt. und dann mit der Highlight version mal durchlaufen lassen. Habe noch nen Screenshot gemacht RE: Probleme mit Drehgeber - GerdW - 29.06.2012 08:41 Hallo Ben, noch einmal: Zitat:- Den Messkanal ("CI Count Edges" und "AI Voltage") nur einmal vor der Schleife initialisieren reicht aus... In jeder Iteration initialisierst du den CTR erneut (und setzt dabei den CTR-Stand auf Null zurück). Direkt nach dem Initialisieren fragst du den CTR-Wert ab - und wunderst dich, warum immer nur ein einziges Inkrement angezeigt wird. Nimm die Initialisierung aus der Schleife raus! Jedes NI-DAQmx-Beispiel zeigt dir das korrekte Vorgehen und ich vermute, auch die ULx-Bibliothek hat "saubere" Beispiel an Bord! RE: Probleme mit Drehgeber - Ben187ny - 29.06.2012 08:55 hi, Danke Danke Habe leider noch nicht so viel Ahnung, danke das du so geduldig bist. Hast vielleicht noch nen tip wie ich jetzt nachdem er die 50mm erreicht hat den Zähler zurück setzt? Und jetzt müsste ich doch einen True/False Case anlegen, der die messung des induktiven Sensors startet oder? RE: Probleme mit Drehgeber - GerdW - 29.06.2012 09:09 Hallo Ben, Zitat:Hast vielleicht noch nen tip wie ich jetzt nachdem er die 50mm erreicht hat den Zähler zurück setzt?Einmal den CTR-Stand in einer Case-Struktur zurücksetzen wäre eine Möglichkeit... Zitat:Und jetzt müsste ich doch einen True/False Case anlegen, der die messung des induktiven Sensors startet oder?Das hängt von deiner Messaufgabe ab: wenn dies verlangt, dann ja... RE: Probleme mit Drehgeber - Ben187ny - 29.06.2012 10:05 sorry das ich schon wieder nerve aber habe das leider noch nie mit dem Case gemacht und die Beispiele bringen mich auch irgendwie nicht weiter. könntest du bitte nochmal drüber gucken ? RE: Probleme mit Drehgeber - Ben187ny - 29.06.2012 10:21 jetzt scheint es auch zu funktionieren. Aber wie man den CTR zurücksetz weiss ich leider noch nicht |