Hallo waja,
die USB6009 ist für diese Aufgabe leider denkbar ungeeignet:
- sie hat nur einen einfachen Counter für ein einzelnes Signal
- die digitalen Eingänge sind "software-getimed" und dadurch auf ca. 100Hz Samplerate begrenzt…
Deshalb:
- Wenn deine AB-Pulse also relativ langsam kommen, könntest du sie auf zwei Digitaleingängen einlesen und selbst auswerten. (Nyquist-Shannon lässt grüßen!)
- Wenn die Pulse schneller takten und du auf diese Hardware festgelegt bist, könntest du sie an die Analoginputs anschließen und dort mit ca. 10kHz einlesen (48kS/s Summenabtastrate?). Dann musst du die Analogwerte wieder in ein Digitalsignal zurückrechnen und wie zuvor händisch auswerten…
Zu deinem "Abfrage"-VI:
- Wozu die Sequenzstruktur?
- Warum indizierst du die Elemente im Array mit den Funktionen "Array to Cluster" und "Unbundle Cluster"? Warum nicht einfach IndexArray?
- Wie willst du an den zwei Bits die Drehrichtung erkennen? Du brauchst dafür auch noch den vorherigen Zustand beider Kanäle!
Hast du dir mal in einem Lehrbuch oder auf Wikipedia durchgelesen, welche Logik hinter "Quadraturencodern" steckt?
Zum "DigitalInput"-VI:
- Wozu eine gestapelte Sequenzstruktur? Rechtsklick auf den Rahmen und "Ersetzen durch flache Sequenz"!
- Wozu dann eine flache Sequenz? Es wird alles durch den DATAFLOW geregelt! THINK DATAFLOW! Rechtsklick auf den Sequenzrahmen -> Sequenz entfernen!
Zitat:Der Counter soll dann jeweils eins hoch oder runter zählen.
Wie soll er das machen, wenn du ihm jedesmal nur die Auswahl von "+1" oder "-1" lässt?
Tipp:
Die Links in meiner Signatur beachten! (Gutgemeinter Ratschlag…)
Sich mit Schieberegistern ("shift register") und deren Anwendung in LabVIEW auseinandersetzen.
Lösungshinweis nach Lesen von Wikipedia: