LabVIEWForum.de - Encoder-Signal einlesen

LabVIEWForum.de

Normale Version: Encoder-Signal einlesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum,

ich habe ein Programm, das ich hier im Forum gefunden habe, so angepasst, dass ich damit drei Spannungssignale über ein "NI USB 6211" einlesen kann. Während der Messung werden diese Signale dann zusammen mit dem Zeitstempel in einem tdms-File gespeichert.

Dieses Programm möchte ich nun so erweitern, dass gleichzeitig ein Encoder-Signal eingelesen wird. Der Encoder hat eine Auflösung von wahlweise 512 bzw. 1024 Inkrementen und stellt eine A-, B- und Indexspur zur Verfügung. Der Programmablauf sollte dann so aussehen, dass hardwareseitig ein Register die Inkremente in Abhängigkeit von Drehrichtung und Indexspur (Reset) mitzählt. Dieses Register soll dann mit der gleichen Frequenz wie die Spannungen eingelesen und in einer zusätzlichen Spalte des tdms-Files gespeichert werden.

Abgesehen davon, dass ich dafür die Zähler des "NI USB 6211" nutzen muss, ist mir nicht so ganz klar, wie ich das am besten umsetze. Daher wäre ich für den ein oder anderen Denkanstoß wirklich sehr dankbarSmile
verstehe ich das richtig, dass ich nur einen zusätzlichen Virtuellen Channel "CI Angular Encoder" ergänzen muss, der dann auch kontinuierlich mit der eingestellten Abtastrate und Buffergröße eingelesen wird? Das wäre ja dann viel einfacher als ich dachteSmile
(10.01.2018 19:58 )creo_123 schrieb: [ -> ]verstehe ich das richtig, dass ich nur einen zusätzlichen Virtuellen Channel "CI Angular Encoder" ergänzen muss, der dann auch kontinuierlich mit der eingestellten Abtastrate und Buffergröße eingelesen wird? Das wäre ja dann viel einfacher als ich dachteSmile

Könnte funktionieren. Ich bin mir aber nicht sicher, ob das diese Karte schon kann.

Probieren geht über studieren!

Gruß, Jens
Hallo creo,

laut NI kann deine Karte einen ABZ-Encoder einlesen…

Ansonsten Profil_ergaenzen
Profil ist aktualisiertSmile

inzwischen habe ich auch mal versucht die Encoderauswertung zu ergänzen. Diese läuft jetzt in einem zweiten Task. Ich möchte hier aber zu den gleichen Zeitpunkten abtasten wie in der Spannungsmessung. Deshalb habe ich bei beiden Tasks die Onboard Clock als Source für die Sample Clock gewählt und die Abtastfrequenz auf 10 kHz eingestellt.

Ich erhalte jetzt aber im Encoder-Task den Fehler -200303. Verstehe ich das richtig, dass ich hier die interne Clock nicht nutzen kann, sondern über einen zweiten Counter (3. Task?) ein Clocksignal erzeugen muss, das ich dann wiederum als Eingang für meine Encoder-Abtastung nutze? Dies würde ja bedeuten, dass ich hardwareseitig den Ausgang des 2. Timers mit dem Eingang der Encoder-Abtastung/Triggerung verbinden muss..

zum besseren Verständnis habe ich das angepasste Programm nochmal angehängt..
1) DAQmx-Read für den Counter, da brauchst du die Variante "Counter 1D DBL 1Chan NSampl".
2) Nimm beim Counter-Task als Quelle ai/SampleClock, nicht die Onboard-Clock

EDIT: Mit einer simulierten 6211 läuft es bei mir.

[attachment=58635]

Gruß, Jens
Vielen Dank für die beiden Tipps! Jetzt funktioniert alles einwandfrei!Smile

Wenn in den Device Specifications nur von einer "Position Measurement" die Rede ist, unterstützt die Karte wohl keine Geschwindigkeitsmessung, richtig?
Referenz-URLs