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!
Servus zusammen,
ich habe mal wieder ein kleines Problem mit Labview. Meine Aufgabe ist es eine Zählung der Digitalflanken eines Inkrementalgebers zu ermitteln. Ich nutze hierfür 2 Kanäle (A und B jeweils invertiert). Ich habe es bereits mithilfe des vorgefertigten Beispiels "counter-count edges" geschafft, dass die Messung vorwärts zählt. Der Inkrementalgeber soll aber nicht nur vorwärts sondern auch rückwärts zählen.
Nun zu meinem Problem.
Ich hatte mir überlegt, dass ich eine Case Struktur benötige, welche 4 Zustande unterscheidet. Die beiden ersten Zustände sind beide Signale high bzw. beide Signale low. In diesem Fall dürfte keine Zählung erfolgen. Der nächste Fall wäre, dass der A Kanal als erstes auf high schaltet. In diesem Fall soll eine positive Zählung erfolgen. Im letzten Fall schaltet der B-Kanal zuerst auf high. Hierbei müssen die Impulse abgezogen werden.
Die Frage ist nun wie kann ich anhand der I/O die Flankenart erkennen. Ich müsste ja einen Ausgang haben, an dem ich auslesen kann ob das Signal high oder low ist. Danach müsste ich diese Signale dann vergleichen und mithilfe des jeweiligen Case auswerten.
Ich weiß das klingt alles ein bissl seltsam, aber mir fällt keine bessere Methode ein. Wenn jemand eine elegantere Methode zur Impulszählung für einen Inkrementalgeber kennt bin ich ganz offen für Vorschläge.
Servus Achim,
Danke für die fixe Antwort. Ich hab das Programm jetzt umgeschrieben und es funktioniert soweit. Die Messungen zählen vor- und rückwärts, jedoch habe ich nun ein Vorzeichenproblem.
Wie man im Anhang erkennen kann, gebe ich einen vorzeichenlosen Integerwert aus. Das Problem ist nun, wenn ich über den Wert "0" hinaus zurückfahre springt mein Messwert auf 4,2.. Mrd. Stattdessen hätte ich lieber einen negativen Wert. Aber das DAQmx-Lesen VI bietet mir nur Integer oder Double an. Ich hatte dann die Idee, dass ich das vorzeichenlose Signal in vorzeichenbehaftet konvertiere, aber das hat nicht wirklich geklappt.
Hat evtl. jemand einen Vorschlag, wie ich das ganze in einen vorzeichenbehaftet Dateityp bekomme.
Beste Grüße
arts
18.09.2012, 10:57 (Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2012 11:00 von Achim.)
(18.09.2012 10:50 )arts schrieb: jedoch habe ich nun ein Vorzeichenproblem...wenn ich über den Wert "0" hinaus zurückfahre springt mein Messwert auf 4,2.. Mrd. Stattdessen hätte ich lieber einen negativen Wert.
Hi,
du kennst ja den Maximalwert...dann könntest du einfach eine Subtraktion mache. Aber das hilft ja auch nicht weiter...irgendwann ist der Zähler voll und muss überlaufen...und dann? Du müsstest den Weg begrenzen damit das immer klappt! Und dazu bräuchtest du eine Referenzposition ("Mitte"?). Wenn du ab beliebigen Positionen neu zu zählen beginnen willst (Inkrementalgeber!), dann wird auch das schwierig zu realisieren.
Was genau ist dein Ziel? Welche Art Anwendung ist das?
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Servus Achim,
das hehre Ziel ist, dass ich am Ende den zurückgelegten Weg einer Schweißanlage, bzw. allg. einer großen Anlage messe und anhand dessen die Geschwindigkeit und evtl. die Beschleunigung ermitteln kann. Das ganze wird demnach auf einer begrenzten Strecke stattfinden.
Der Betrieb wo ich mein Praktikum mache möchte halt hauptsächlich ein Programm realisiert haben, womit die normalen Angestellten umgehen können und schnell mal Messungen machen können.
Ich werde jetzt mal das mit der Referenzposition überdenken.
Beste Grüße
arts
18.09.2012, 11:38 (Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2012 11:39 von Achim.)
(18.09.2012 11:11 )arts schrieb: das hehre Ziel ist, dass ich am Ende den zurückgelegten Weg einer Schweißanlage, bzw. allg. einer großen Anlage messe und anhand dessen die Geschwindigkeit und evtl. die Beschleunigung ermitteln kann. Das ganze wird demnach auf einer begrenzten Strecke stattfinden.
Ich werde jetzt mal das mit der Referenzposition überdenken.
Dann würde sich ja ein Absolutwertgeber anbieten...
Hast du auch einen Z-Kanal? Den könntest du ja zur Referenzierung verwenden...
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Ja es ist ein Z-Kanal verfügbar. Das Problem ist nur, dass der Inkrementalgeber mit 5V TTL arbeitet und das Messgerät (NI PXI-6238) mit 24V HTL. Deswegen musste ich einen Pegelwandler einbauen und da sind in der Firma leider nur 2 Stück vorhanden.
Wegen des Absolutwertgebers muss ich erstmal Fragen ob die sowas haben.
Danke für deine bisher investierte Zeit
Beste Grüße
arts
18.09.2012, 12:09 (Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2012 12:17 von Achim.)
Die Firma hier kann ich empfehlen: http://www.atrie.de/userfiles/files/data...r_hm14.pdf
Die sind auch recht preiswert (im Wortsinn!), ich hatten nen anderen Wandler in mehreren Anlagen eingesetzt und bin zufrieden.
Zu deinem VI: In die Schleife für DAQmxRead ein Wait hineinzusetzen, ist zwar bei Anfängern durchaus beliebt, aber nichtsdestotrotz fast immer Tödlich. Es ist dann möglich, dass nicht so viele Samples gelesen wie erzeugt werden, und es kommt zum Pufferüberlauf. Das DAQmxRead synchronisiert die Schleife selbst entsprechend dem Datenaufkommen, dazu brauchts kein Wait
Mit U-Fomaten kannst Du natürlich keine negativen Werte darstellen. Nimm doch einfach das Format DBL. Andere Möglichkeit: U32 zu I32 konvertieren. Aus den hohen Werte werden dann die richtigen negativen Werte.
Ich würde den Winkelencoder nicht so leicht beiseitelegen, alles andere wird deutlich teurer. Natürlich muss es dann im Proramm eine Referenzfahrt zur Nullung des Zählers geben, und es wird zusätzlich ein Positiondetektor für die Referenzposition gebraucht. (Vielleicht tut es auch ein harter Anschlag am Anfang) Ich weiß ja nicht, wie das ganze Gebilde bewegt wird, ob es da überhaupt einen Motor gibt.
Zitat:Nimm doch einfach das Format DBL. Andere Möglichkeit: U32 zu I32 konvertieren
Das mit den Double stört mich wegen der Fließkommazahl. Ich finde das persönlich unpassend, da die Zählung ja eigentlich nur mit absoluten Werten arbeiten soll. Zum zweiten, das hatte ich schon probiert. Aber nachdem ich deinen Post heute früh gelesen hatte hab ich mich nochma rangesetzt.
Das Ende vom Lied war, das der Fehler recht simpel auf meine Unachtsamkeit zurückzuführen war. In dem vorgefertigten VI war U32 mit %u (vorzeichenlose Dezimalzahl) am Anzeigeelement eingestellt. Zudem hat sich die Ausgabe nicht automatisch an die Quelle angepasst. Nachdem ich kurz manuell nachgesteuert habe funktioniert es.
Zitat:wie das ganze Gebilde bewegt wird
Ich vermute linear, aber ich arbeite hier nur nach Vorgabe, ohne die Maschiene je gesehen zu haben. Vermutlich weiß die Firma noch garnicht, wo genau die Messung gemacht werden soll und will das ganze mehr oder weniger universal im Betrieb einsetzen.
Ich werde trotzdem noch an der Referenzierung mit dem Z-Kanal dranbleiben und mich melden wenn hoffentlich alles funktioniert.