![]() |
3 TTL Signale + Encoder HW getaktet erfassen und bei TTL-Änderung Enc-Wert ausgeben - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: 3 TTL Signale + Encoder HW getaktet erfassen und bei TTL-Änderung Enc-Wert ausgeben (/Thread-3-TTL-Signale-Encoder-HW-getaktet-erfassen-und-bei-TTL-Aenderung-Enc-Wert-ausgeben) |
3 TTL Signale + Encoder HW getaktet erfassen und bei TTL-Änderung Enc-Wert ausgeben - ewiebe - 04.06.2025 14:27 Hallo, ich möchte gerne mit einem DAQmx PCI / PCie - Gerät 3 digitale TTL Signale beobachten und gleichzeitig einen Encoder (Motor/Schlitten mit Encoder) beobachten. Also 4 Eingänge: 1. TTL Eingang 1 2. TTL Eingang 2 3. TTL Eingang 3 4. Encoder Signal (Spur A und Spur B) Nun soll mir DAQmx die Signale in Hardware beobachten und sobald sich ein Eingang ändert, dann soll er mir eine Nachricht schicken. Und zwar wenn sich der Eingang 1 ändert, dann soll er mir eine Nachricht schicken, dass der Wert des Eingang 1 sich geändert hat, mit zugehörigem (zu dem Zeitpunkt aktuellen) Encoder-Wert. Und wenn sich der Eingang 2 ändert, dann soll er mir entsprechend eine Nachricht schicken, dass der Wert des Eingang 2 sich geändert hat, mit zugehörigem Encoder-Wert Dasselbe für Eingang 3. Und keine Nachricht darf dabei überschrieben oder verloren werden. Wofür brauche ich das? Angenommen ein Sensor hat 3 Reedkontakte. Ich möchte den Sensor auf einen Hand-Schlitten mit Encoder packen und ihn von Hand hin und her bewegen (schnell) und ich möchte wissen, bei welchem Encoder Wert (Auflösung z.B. 1/100 mm) jeder Reedkontakt geschaltet hat. P.S. Die Kontakte prellen Ich habe hier z.B. die Karte NI PCIe-6323 Ist sowas überhaupt möglich? Ich habe dieses gefunden: https://www.ni.com/en/support/documentation/supplemental/21/getting-started-with-daqmx-daqmx-events.html Aber ich denke, das passt nicht ganz, oder? Danke und Gruß ewiebe RE: 3 TTL Signale + Encoder HW getaktet erfassen und bei TTL-Änderung Enc-Wert ausgeben - MScz - Gestern 11:56 Hallo ewebie, ich hatte damals eine ähnliche Aufgabenstellung und habe diese wie folgt gelöst. Meine Aufgabenstellung war die Einstellung eines Inkrementalgebers mit Hall-Signalen zu prüfen. Wenn das gewünschte Hall-Signal kam, wurde der Zähler genullt, wenn nicht wurde einfach mit A und B Spur die Position bestimmt. Ich habe zwei while-Schleifen genommen. Eine zum einlesen der Daten, eine zum Auswerten der Daten. Beim Einlesen habe ich mehrer lines in einen Chanel zusammen gefasst (STRG-Taste, beim Anlegen, für die Auswahl der Eingänge drücken). Die Sampels kommen dann in eine Qeue und werden von der anderen Schleife ausgewertet. Bei der Auswertung habe ich eine Matrix genommen, die dann je nach Zustand davor und aktuellem die passende Aktion in einer Case-Struktur auslöst (Deswegen auch die U8 als Datentyp). Da ich später einen Statischen Zustand hatte, konnte ich einfach den Zähler bzw. Winkel auslesen und war glücklich. Dies wird für dich nicht passen. Du könntest es aber ähnlich lösen. Die Reed-Kontakte könntest du in einer Logik Auswerten lassen und dann bei einem passenden Zustand dir den genau passenden Zählerwert und damit die passende Position ausgeben lassen. Wie das mit dem Prellen der Kontakte aussieht musst du dann rausfinden, aber auch dafür gibt es ein schönes VI, das kann ich bei Gelegenheit noch mal raussuchen. Vorteil ist halt, das es mit fast jede NI Hardware geht die schnell genug ist um keinen Zustand zu übersehen. Ich habe dir das Snippet der beiden Schleifen mal angehängt. PS: Ich kann dir erst am 11.06 wieder antworten. Wünsche dir aber ein langes Wochenende. |