Hallo redhand,
ja, die Counter erwarten digitale Signale...
Zitat:Die Ausschläge sehen dann im Graph aus wie digitale Signale, sind ja aber eigentlich keine, könnte da der Fehler liegen?
Wie sieht denn dein "analoges Signal" aus? Welche Spannungspegel?
Entweder liefert dein Sensor schon ein TTL-Signal (ca. 0V/5V Pegel) oder du kannst eine kleine Elektronikschaltung mit einem Schmitttrigger (z.B. 74HC14) zusammenlöten, die das erledigt. Dann einfach an di0 statt ai0 anschließen...
Hallo Gerd!
(08.10.2013 13:32 )GerdW schrieb: [ -> ]Wie sieht denn dein "analoges Signal" aus? Welche Spannungspegel?
Entweder liefert dein Sensor schon ein TTL-Signal (ca. 0V/5V Pegel) oder du kannst eine kleine Elektronikschaltung mit einem Schmitttrigger (z.B. 74HC14) zusammenlöten, die das erledigt. Dann einfach an di0 statt ai0 anschließen...
also nach Datenblatt des Sensors liegt der High Level Output Voltage bei 2,4V und Low Level Output Voltage bei 0,4V . Also solche Ausschläge bekomme ich bei Bewegung der Scheibe über den Sensor. Ein Ausschlag wird alle 37µm erzeugt.
Ich denke der Sensor liefert schon ein TTL-Signal.
Wenn ich auf di0 umstecke sehe ich in einem Verlaufsgraphen wieder schön den wechsel zwischen 0 und 1 wenn die Scheibe bewegt wird. Der Zähler funktioniert nur trotzdem noch nicht obwohl ich den richtigen physikalischen Kanal auswähle.
Im oberen Teil des VIs stimmt irgendetwas nicht. Kann es hier etwas mit dem DAQmx-Lesen zu tun haben?
Hallo redhand,
wenn ich den DAQ-Assi in deinem VI öffne, zeigt er mir an, dass er das Signal "line1/port0" einliest. Dasselbe Signal willst du für den Counter verwenden. So geht das nicht...
- Ich hatte schon mal gesagt, dass das Mixen von DAQ-Assi und DAQmx-Funktionen sehr unsauber ist...
- Du verwendest (lt. DAQ-Assi) eine USB6008. Die hat einen speziellen CTR-Eingang namens PFI0. Lese dir das Manual zur USB6008 durch und schaue dir die mitgelieferten CTR-Beispiele an (z.B. "Count Digital Events")!
Die USB6008 ist auf den DI-Anschlüssen wahrscheinlich zu langsam, um alle Flanken anzuzeigen, da du hier auf software-getaktete Abfragen beschränkt bist. Der CTR wird aber funktionieren!
(08.10.2013 14:08 )GerdW schrieb: [ -> ]wenn ich den DAQ-Assi in deinem VI öffne, zeigt er mir an, dass er das Signal "line1/port0" einliest. Dasselbe Signal willst du für den Counter verwenden. So geht das nicht...
Also kann ich das abgegriffene Signal je nur einmal "verwenden"?
Aber auch wenn ich das tue bekomme ich jetzt Fehler angezeigt. Und zwar, dass der I/O-Typ des physikalischen Kanals nicht zu dem für den virtuellen Kanal erforderlichen I/O-Typ passt.
"Name des physikalischen Kanals: ai0
Virtueller Kanal (Name): Dev1/ai0
Erforderlicher I/O-Typ für virtuellen Kanal: Zählergestützte Erfassung"
"Zählergestützte Erfassung" habe ich jedoch schon ausgewählt.
(08.10.2013 14:08 )GerdW schrieb: [ -> ]- Du verwendest (lt. DAQ-Assi) eine USB6008. Die hat einen speziellen CTR-Eingang namens PFI0. Lese dir das Manual zur USB6008 durch und schaue dir die mitgelieferten CTR-Beispiele an (z.B. "Count Digital Events")!
Ich habe wirklich eine NI USB-6009!
Wie kann das dann sein, vlt ein alter Treiber?
Hallo redhand,
Zitat:Also kann ich das abgegriffene Signal je nur einmal "verwenden"?
Du knntest einen Draht zwischen DI0 und PFI0 klemmen und beide Eingänge abfragen...
Zitat:der I/O-Typ des physikalischen Kanals nicht zu dem für den virtuellen Kanal erforderlichen I/O-Typ passt.
Wieso denn nun wieder ai0? Wir waren doch schon soweit, dass du die digitalen Eingänge nutzen solltest...
Zitat:Ich habe wirklich eine NI USB-6009
Das bei mir eine USB6008 angezeigt wird, könnte daran liegen, dass Dev1 bei mir eben eine 6008 ist. Nicht weiter daran stören.
Aber auch für die USB6009 gilt: du musst für den Counter den PFI0-Eingang nutzen!
Hast du das genannte Beispiel ausprobiert?
(08.10.2013 15:09 )GerdW schrieb: [ -> ]Du knntest einen Draht zwischen DI0 und PFI0 klemmen und beide Eingänge abfragen...
danke, funktioniert wunderbar
(08.10.2013 15:09 )GerdW schrieb: [ -> ]Wieso denn nun wieder ai0? Wir waren doch schon soweit, dass du die digitalen Eingänge nutzen solltest...
Sorry, da hab ich nochmal rumprobiert
(08.10.2013 15:09 )GerdW schrieb: [ -> ]Aber auch für die USB6009 gilt: du musst für den Counter den PFI0-Eingang nutzen!
Hast du das genannte Beispiel ausprobiert?
Ja, danke für diesen Tipp, jetzt funktioniert es!!
Also jetzt läuft es so, dass wenn ich die Scheibe bewege, der Zähler hochzählt. Diese Scheibe geht jetzt zwischen 2 Anschlägen hin und her. Einmal hin und her sind 700 Signale. Kann ich in diesem Zähler nochmal einen Zähler integrieren, der mir alle 700Signalen wieder von 1 hochzählt, sodass ich als Ausgabe einfach die Zyklenanzahl kriege oder wird das zu kompliziert?
der kampf geht weiter
Hallo redhand,
Zitat:Diese Scheibe geht jetzt zwischen 2 Anschlägen hin und her. Einmal hin und her sind 700 Signale. Kann ich in diesem Zähler nochmal einen Zähler integrieren, der mir alle 700Signalen wieder von 1 hochzählt, sodass ich als Ausgabe einfach die Zyklenanzahl kriege oder wird das zu kompliziert?
Die USB600x unterstützen (so aus dem Kopf, kannst ja im Manual nachlesen...) nur einen einfachen Einzel-Counter, jedoch keine AB(Z)-Counter. Ich würde deshalb versuchen, an beiden Anschlägen einen Taster anzubringen, den ich über einen freien DI abfrage. Wenn Scheibe am Anschlag, dann Counter zurücksetzen...
naja, du könntest nach 350 Impulsen wieder rückwärts zählen - oder verkenne ich die Tragweite des Problems?
Zudem ist dir die Drehrichtung bekannt oder?
Dann kann man doch auch seinen Counter gestalten, wie man lustig ist.
(09.10.2013 14:01 )BsaiboT schrieb: [ -> ]naja, du könntest nach 350 Impulsen wieder rückwärts zählen - oder verkenne ich die Tragweite des Problems?
Zudem ist dir die Drehrichtung bekannt oder?
Das Problem ist, ich würde gerne alle x Signale um 1 hochzählen, sodass ich die Zyklenzahl der Pendelbewegung zählen kann.
Zu AB Counter habe ich jetzt in Kürze in Verbindung mit der 6009 Box nichts gefunden. Also denke ich das nur ein Einfachzähler vorliegt.
Nach 350 Impulsen rückwärts zählen wäre aber auch praktisch. Wo kann ich sowas einstellen?
Die Drehrichtung ist bekannt, ja
Achja - hatte übersehen, dass du den Counter vom 6009 nutzt. Den kann man nur durch stoppen und starten des Tasks zurücksetzen (sofern ich mich richtig erinnere).
Ich hatte angenommen, dass du in deinem LV-Code selbst noch einmal mitzählst. Der Counter im 6009 dürfte immer nur vorwärts zählen, bis die 32bit überlaufen und er nach ca 4,3 Mrd. counts wieder bei Null beginnt.
Kann aber auch sein, dass ich gerade alles durcheinander bringe und nur Verwirrung stifte.
Wenn du in deinem Programm einen eigenen Zähler mitlaufen lässt, kannst du natürlich alles damit machen. Zyklen zählen, vor- & rückwärts zählen usw.