LabVIEWForum.de
neg.Flanke erfassen u. Zeit bestimmen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: neg.Flanke erfassen u. Zeit bestimmen (/Thread-neg-Flanke-erfassen-u-Zeit-bestimmen)



neg.Flanke erfassen u. Zeit bestimmen - Wernie76 - 19.11.2008 16:20

Hallo,

ich möchte von einem digitalen Signal jeweils den zeitlichen Abstand zwischen zwei negativen Flanken messen.
Vielleicht kurz zur Erklärung:
Wir haben hier ein Laufband auf dem irgendwelche Dinge liegen und an einer Lichtschranke vorbeifahren. Jedes mal beim durchqueren der Lichtschranke wird ein negativer Impuls ausgegeben. Den Abstand dieser Impulse, bzw. den Abstand der negativen Flanken, möchte ich jeweils bestimmen. Wir bewegen uns hier im ms-Bereich.
Eine Messung dauert ca. 4 Minuten. Während dieser Zeit möchte ich alle zeitlichen Abstände zwischen den neg. Flanken erfassen und in ein Arry speichern. Anschliessend werden diese Daten dann ausgewertet und es wird geschaut ob die Produkte alle in einem vorgegebenen zeitlichen Abstand durch die Lichtschranke gelaufen sind. Aber dieses ist eine anderes Geschichte. Erst mal muss ich die Erfassung hinbekommen.
Außerdem muss das ganze nicht nur für ein Laufband gemacht werden, sonder gleichzeitig für 12. Also 12 Kanäle.
Ich habe mir dazu eine PCI Karte 6254 zugelegt, mit 32 analog Inputs und 48 Digital I/O. Aber ganz ehrlich gesagt komme ich irgendwie nicht so recht weiter. Hat jemand von euch eine Idee und kann mir helfen?
Vielen Dank für eure Mühen.
Gruß
Daniel


neg.Flanke erfassen u. Zeit bestimmen - Kvasir - 19.11.2008 17:27

Hmm .... nun:

Was hast du denn schon?
Woran scheitert es?


Auf deine allgemeine Fragestellung eine allgemeine Antwort:
- Einen Task erstellen, der mind 12 Kanäle einliest (vermutlich kann die Karte nur Ports erfassen sprich: 8,16,32 ... Kanäle)
- Als Sampling Rate (ausgehend von Digital) eine Rate einstellen die höher ist als die minimale High/Low Zeit deines Sensors (damit alles erfasst wird)
- Kontinuierliche Datenerfassung (na/no/na/ned)
- Per "Kleiner" Operation negative Flanke finden
- Differenz der Flanken ausrechnen.

Grüße


neg.Flanke erfassen u. Zeit bestimmen - Lucki - 19.11.2008 19:22

' schrieb:Während dieser Zeit möchte ich alle zeitlichen Abstände zwischen den neg. Flanken erfassen und in ein Arry speichern.
Das ist genau das, was in den meisten Universalmesskarten von NI fix und fertig implementiert ist. Das Array anthält alle Zeitabstände zwischen den Flanken.
Z.B erstellst Du dafür eine virtuelle Task dafür im M&A-Explorer:
Datenumgebung --> DAQmx-Tasks --> rechte Maustaste -> Neu --> Signale erfassen --> zählergestützt --> Periode.

Wehrmutstropfen: Das wird nur für 1 oder 2 Kanäle funktionieren, mehr Counter hat die Karte nicht.
Somit wirst Du doch in der von Kvasir genannten Richtung gehen müssen.
Dazu ist noch zu sagen:
a) Kontinuierlich digitale Daten mit hoher Rate einzulesen funktioniert nicht mit allen Karten. Es kann sein, daß Du mit analoger Eingabe besser kommst. Die Daten mit einem Schwellwert vergleichen und in O/1 Werte konvertieren ist ja kein Problem.
b) Kvasir berechnet die Rate so, daß Dir keine Flanken verloren gehen. Du willst ja aber nicht die Flanken zählen, sondern die Zeitabstände zwischen den Flanken erfassen. Somit muß die Rate deutlich höher sein, wie hoch, hängt von der geforderte Zeitauflösung (Genauigkeit) ab.


neg.Flanke erfassen u. Zeit bestimmen - Wernie76 - 24.11.2008 13:20

Hallo,

danke für Eure Antworten.
Ich hab es soweit dass ich einen digital Port einlese und zwar mit 100kHz Timebase.
Das funktioniert soweit ganz gut, ist aber an sich zu schnell. Man kann da aber irgendwie nur 100kHz oder 10MHz, 20MHz oder 80MHz einstellen. Ich wollte aber an sich ganz gerne 10k einstellen. Das ist schnell genug und gibt mir nicht so eine riesen Anzahl von Daten. Wie kann man das einstellen?
Ich hab das auch nicht mehr mit dem DAQ Assistenten gemacht, sondern die Datenerfassung "per Hand" mit den vorhandenen VI´s aufgebaut (DAQ Max Kanalerzeugen.vi, DAQ Max Timing.vi...etc). Mit dem Assistenten konnte man ja wirklich nicht viel einstellen. Sobald man da irgendwas anderes als die Standardeinstellung nehmen wollte, kam meistens eine Fehlermeldung.
Aber per hand ging das irgendwie alles,.... außer halt die 10kHz.
Kann mir da jemand weiterhelfen? Danke.
Gruß
Daniel


neg.Flanke erfassen u. Zeit bestimmen - Lucki - 24.11.2008 14:00

' schrieb:Kann mir da jemand weiterhelfen? Danke.
Zwar peinlich, sich selbst zitieren zu müssen, aber was solls, wenn Du das Posting nicht liest:
Zitat:Kontinuierlich digitale Daten mit hoher Rate einzulesen funktioniert nicht mit allen Karten. Es kann sein, daß Du mit analoger Eingabe besser kommst. Die Daten mit einem Schwellwert vergleichen und in O/1 Werte konvertieren ist ja kein Problem.



neg.Flanke erfassen u. Zeit bestimmen - Wernie76 - 24.11.2008 15:21

Hallo Lucki,

natürlich habe ich dein Posting gelesen.
Ich glaube wir reden gerade aneinander vorbei oder ich hab´s einfach nicht verstanden..... :-(
Du schriebst dass man nicht mit allen Karten mit hoher Abtastrate digital einlesen kann und ich deshalb evtl auf analog gehen müßte.
Mein Problem ist ja quasi genau umgekehrt. Ich lese ja jetzt mit hoher Abtastrate (100k) ein und will aber mit niedriger (nämlich 10k, oder 20k) einlesen.
Und genau das geht ja irgendwie nicht.
Gruß
Daniel


neg.Flanke erfassen u. Zeit bestimmen - Lucki - 25.11.2008 09:20

' schrieb:Mein Problem ist ja quasi genau umgekehrt. Ich lese ja jetzt mit hoher Abtastrate (100k) ein und will aber mit niedriger (nämlich

Also jetzt habe ich mir mal die Mühe gemacht und die Spezifikation Deiner Karte angesehen.
Sie gehört nicht zu denen, mit denen man keine digitale Waveform erzeugen kann: Mit Port 0 geht es.
Allerdings, siehe die Fußnote 3 (Kopie unten), gibt es für digitalen I/O keinen eigenen internen Timer für die Taktung. Es gibt aber mehrere andere Timer auf der Karte, davon muß man einen für die Taktung benutzen. Das zu machen isr aber eher ein Sache für fortgeschrittene Anwender. Lernen wie man das macht kann man in der Beispielesammlung.
Ganz einfach ist hingegen das Einlesen einer analogen Waveform, deshalb war mein Rat damit anzufangen. Auch hier gilt: Beispiele studieren. Du kanst quasi jede Frequenz mit dem Timing-VI auswählen, ohne nachdenken zu müssen wie es intern gemacht wird. Das Einzige ist, das wegen der Frequenzerzeugung aus einem 20MHz Muttergenerator nicht jede gewünschte Frequz machbar ist. Das spielt aber bei niedrigen Raten keine Rolle. (Machbar im Bereich 10kHz ist z.B. 9995 HZ, 10000Hz, 10005Hz...)
Also so sollte Dein Lernprozess abgestuft sein:
1.) Lernen analoge Waveform mit 10kHz einzulesen
2.) Lernen Digitale Waveform einzulesen und wie man dazu zur Takterzeugung einen Timer auf der Karte routet, so daß er als Taktgeber dient.
Damit hast Du erst mal für etliche Tage Arbeit.

[attachment=15524]


neg.Flanke erfassen u. Zeit bestimmen - Wernie76 - 25.11.2008 13:13

Ich sag einfach erst mal danke und werde mich dann jetzt mal ein paar Tage in mein stilles Kämmerlein verkriechen :-)