LabVIEWForum.de - Signal differenzieren

LabVIEWForum.de

Normale Version: Signal differenzieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Sehr geehrte LabViewForum-Community!

Für ein Schulprojekt soll ich das Interface für einen 24V Gleichstromservomotor schreiben, den wir über den Servomotorcontroller LM629n ansteuern (für die Parametrierung verwenden wir noch einen Atmega32 als Host-µC). Aber da ich mich nicht wirklich mehr raussehe aus dem Auftrag, hoffe ich auf Hilfe eurer Seite.

Bis jetzt habe ich das Programm soweit, dass ich die Werte problemlos ein- bzw. auslesen kann. (Die Combo-Box hab ich für den Zweck, dass ich nicht immer alle Parameter mühevoll eingeben muss...)

Nun zum Problem: Da ich die Position in Inkrementen einlesen kann (weil wir einen Inkrementalgeber haben), sollte es möglich sein diese zu differenzieren und so zur Geschwindigkeit zu kommen, aber ich habe keinen Plan wie ich das angehen soll...
Ich muss nämlich in nem Grafen die Geschwindigkit pro Zeit abbilden können und nicht Position pro Zeit.

Im Anhang befindet sich noch mein Programm.



Mit freundlichen Grüßen | Best Regards
Joachim Hofer
Hallo Joachim,

Zitat:Im Anhang befindet sich noch mein Programm.
Wo?

Zitat:diese zu differenzieren und so zur Geschwindigkeit zu kommen, aber ich habe keinen Plan wie ich das angehen soll...
In einem Schieberegister den vorigen Positionswert speichern. Beim nächsten Auslesen der Position die Differenz zum alten Wert bilden und durch die vergangenene Zeit dividieren. Fertig.
Hab das Programm jetzt in den Anhang gehängt und danke für den Tipp. Werds mal versuchen.

Mit freundlichen Grüßen | Best Regards
Joachim Hofer
Hallo Joachim,

so in etwa:
[attachment=48755]

Da du den TermChar benutzt, habe ich das dann unnötige (und fehlerhaft implementierte) BytesAtPort entfernt!
Danke für die schnelle Antwort, werds gleich mal nachprogrammieren und es anschließend gleich ausprobieren.

MfG. Joachim Hofer
(28.02.2014 12:18 )joachim3 schrieb: [ -> ]Da ich die Position in Inkrementen einlesen kann (weil wir einen Inkrementalgeber haben), sollte es möglich sein diese zu differenzieren und so zur Geschwindigkeit zu kommen, aber ich habe keinen Plan wie ich das angehen soll...
Könnte man machen, aber warum das, wenn man aus dem LM629n (Hier Datenblatt) während der Fahrt sowohl die momentane absolute Position als auch die momentane reale Geschwindigkeit direkt auslesen kann? Der Encoder für den Inkremetalgeber ist ja bereits im LM629 drin, es wäre doch absolut schwachsinnig, nochmal parallel dazu eine zweite Dekoder-Hardware anzuschließen, nur um dann mit der Auswertung der Impulse das zu machen, was bereits der LM629n mundgerecht liefert.

In der Visa-Konfiguration muss "Zeilenendezeichen" deaktiviert werden, da der LM629n kein Abschlußzeichen mitliefert, sondern nur die reinen Bytes.
Edit: Der LM629n selbst hat eine parallele Schnittstelle. Der erwähnte Mikrocontroller macht wohl ein reine Parallel <--> Serial-Konversion, oder macht er sonst noch etwas mit den durchgeleiteten Daten?
Der LM629n gibt mir aber nur ein Trapezsignal für die Geschwindigkeit. Ich brauche aber die Geschwindigkeit in Abhängigkeit der Zeit vom Einheitssprung aus betrachtet...
Lt. Datenblatt kann man den Momentanwert der Geschwindigkeit auslesen, und zwar "on the fly". Ein kompletter Lesevorgang an der parallelen Schnittstelle dauert ca. 1 µs, wenn es sein muß könnte man die momentane Geschwindigkeit aus der parallelen Schnittstelle 10E6 mal/s lesen. Mit Datenkonvertierung zu seriell mindestens noch 1E3 mal/s.
Wenn Du jetzt aber schreibst "Der LM629n gibt mir aber nur ein Trapezsignal für die Geschwindigkeit" - dann fällt mir dazu nichts mehr ein, und möglicherweise hält dieser Zustand den ganzen Thread hindurch an Big Grin
Referenz-URLs