LabVIEWForum.de
Wie lese ich ein TTL-Signal richtig in LabView ein? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Wie lese ich ein TTL-Signal richtig in LabView ein? (/Thread-Wie-lese-ich-ein-TTL-Signal-richtig-in-LabView-ein)



Wie lese ich ein TTL-Signal richtig in LabView ein? - aet - 14.09.2012 10:23

Sehr geehrte LabView-Entwickler, vorweg ich bin ein absoluter Anfänger in LabView, deshalb denke ich das es für mein Problem, eigentlich auch eine einfache Lösung gibt, habe aber leider nichts im Internet gefunden (auch hier im Forum nicht), was mir weiterhelfen konnten.
Deshalb will euch mal mein Problem schildern, in der Hoffnung das ihr mir weiterhelfen könnt.
Ich soll von der Uni aus, mit einem PXI 8195 welches eine PCI 6229 Karte besitzt an der eine SCB 68 Box angeschlossen ist, ein ttl-Signal einlesen. Das ttl-Signal wird von einem Durchflussmessgräte von Gregory gesendet, welches Hochgenau den Kraftstoffverbrauch eines Autos misst. Das ttl-Signal hat eine Frequenz von max 32kHz, wichtig ist das ich jeden der Impulse zähle da sonst die Messung ungenau ist.(Jeder Puls entspricht einer Volumeneinheit)
Als erstes habe ich beiden Kabel in die normalen Digitalen Anschlüsse gesteckt in meinen Fall waren es die Anschlüsse 48 und 15 in der SCB 68 Box . Und habe dann das unten aufgeführte VI benutzt.
Das Problem ist, das ich hier nicht alle Pulse gezählt werden die vom Messsysteme geschickt werden, wenn z.B. die Schleife langsamer dauert werden immer weniger gezählte. Ich brauche wie gesagt alle Pulse unabhängig wie lange die Schleife dauert. Was müsste ich im VI ändern das es das tut?
Als 2 habe ich die Kabel in die Anschlüsse 44 und 11 genutzt um den Kanal PFI0 zu nutzten. Da ich gelesen habe das diese Kanäle sehr Praktisch sind für die ttl-Signale da sie getriggert sind. Ich kann in MAX dann auch unter Testpannels => Zählergestützte I/O auch Flankenzählen. Leider weiß ich nicht wie ich das jetzt auch in LabView nutzten kann und ob es die bessere Möglichkeit ist als das oben beschriebene Vorgehen?
Ich hoffe ich habe mich einiger Maßen verständlich ausgedrückt, und hoffe habe das Thema auch ins richtige Forum geschrieben, wie gesagt arbeite erst seit 3 Wochen mit LabView.
Danke schon mal im voraus für eure Hilfe
Mit freundlichen Grüßen


[attachment=41533]


RE: Wie lese ich ein TTL-Signal richtig in LabView ein? - GerdW - 14.09.2012 10:45

Hallo aet,

dein VI liest alle 10ms den aktuellen Zustand des DI-Ports. Damit wirst du nie ein 32kHz-Signal vernünftig einlesen können! (Mit Einzelwert-Abfrage wird das eh nichts, da viel zu langsam. Du müsstest den DI also hardwaregetaktet abfragen und das Signal selbst auswerten.)

Nutze stattdessen den PFI0-Eingang. Dieser übernimmt für dich schon die Hauptarbeit: das Zählen der Pulse!
Du musst jetzt nur noch im gewünschten Intervall (z.B. alle 100ms) den aktuellen Zählerstand abfragen und kannst so die Flussrate bestimmen.

Guck dich einfach mal bei den mit LabVIEW mitgelieferten Beispielen um, da sind garantiert welche dabei, die auch die Zähler erläutern!


RE: Wie lese ich ein TTL-Signal richtig in LabView ein? - Lucki - 14.09.2012 12:34

Du kannst direkt im MAX (Measurement & Automation Explorer) eine Virtuelle Task "Flankenzählung" einrichten. (Rechte Maustaste/Datenumgebung/NI-DAQmx-Task). Und man kann das Schaltbid ausdrucken (wobei es sich hier nur im eine Anschlussleitung handelt). Darüber hinaus kann man die Ausgabe sogar skalieren, so dass beim Lesen mit DAQmxRead direkt das Volumen statt der seit Start gezählten Impulse angezeigt wird.

Wahscheinlich willst Du sowohl die Durchflussmange als auch die Durchflussrate messen.

Die Leserate ist beliebig, es geht nichts verloren.
Bei der manuellen Ablesnung macht es aber keinen Sinn, mit mehr als 10 Hz einzulesen, wie GerdW schon andeutete.
Für die Bestimmung der Rate müßte die Differenz zwischen den Ablsesungen gebildet werden. Man hat die Wahl zwischen hoher Aktualität, aber großer Ungenauikeit, weil nur wenige Impulse jeweils neu hinzugekommen, und verzögerter Anzeige, aber großer Genauigeit. (Für eine 1%ige Genauigkeit solle man mehr als 100 Impulse in der Differenz haben)
Noch ein Tip: Wenn in der Schleife zur Datenerfassung ein Wait oder Timer vorkommen sollte, dann ist irgendetwas suboptimal, wenn es denn überheupt funktioniert.


RE: Wie lese ich ein TTL-Signal richtig in LabView ein? - aet - 25.09.2012 15:39

Vielen Dank für die Hilfe,
Ich musste noch ein wenig rum probieren bis es funktionier hat.
Falls jemand das selbe Problem hat wie ich, kommt hier die Lösung:

Als erstes musste ich das TTL-Kabel mit dem PFI 3Eingang verbinden, welcher ein Source Eingang ist und nicht den PFI 0. In der SCB 68 Box hat der PFI 3 Eingang z.B. die Nummer 42, klar dazu braucht man dann noch ein DGND, ich habe die Nummer 9 genommen.
Und dann habe ich das Programm, was ich unten eingefügt habe, genutzt in LAbView.

Gut dann noch mal vielen Dank für die Hilfe

[attachment=41661]

[attachment=41660]