29.10.2012, 15:11
29.10.2012, 15:13
Hallo Hans,
ich würde dafür nicht MAX, sondern die DAQmx-Funktionen verwenden. So wie du selbst schon nicht weißt, wie der Task erstellt ist, weiß es ein potentieller Nachfolger von dir in (sagen wir mal) 3 Jahren erst recht nicht. Und Betriebsfremde (wie wir hier) schon gar nicht!
Deshalb: Im VI DAQmx-Funktionen zum Erstellen/Konfigurieren des Task verwenden...
ich würde dafür nicht MAX, sondern die DAQmx-Funktionen verwenden. So wie du selbst schon nicht weißt, wie der Task erstellt ist, weiß es ein potentieller Nachfolger von dir in (sagen wir mal) 3 Jahren erst recht nicht. Und Betriebsfremde (wie wir hier) schon gar nicht!
Deshalb: Im VI DAQmx-Funktionen zum Erstellen/Konfigurieren des Task verwenden...
29.10.2012, 15:20
ich weis es nicht, weil ich momentan leider nicht am gerät sitze. Ich habe allerdings nem Kollegen, der gerade dran sitz gesagt er solle es mir schicken. Aber der bekommt scheinbar mal wieder nix auf die Reihe. Das ist doch ein DAQmx task. Und ich poste morgen wie der Konfiguriert ist.
06.11.2012, 19:49
So, hier sind die Einstellungen des Tasks.
07.11.2012, 10:51
Hallo!
Ich möchte an dieser Stelle Gerd beipflichten.
Auch ich konfiguriere meine Tasks NIE mit dem MAX. Das gehört aus meiner Sicht immer in das Blockdiagramm.
Ist für die spätere Pflege und etwaige Änderungen viel besser dort aufgehoben.
Grüße
Andreas
(29.10.2012 15:13 )GerdW schrieb: [ -> ]ich würde dafür nicht MAX, sondern die DAQmx-Funktionen verwenden.
Ich möchte an dieser Stelle Gerd beipflichten.
Auch ich konfiguriere meine Tasks NIE mit dem MAX. Das gehört aus meiner Sicht immer in das Blockdiagramm.
Ist für die spätere Pflege und etwaige Änderungen viel besser dort aufgehoben.
Grüße
Andreas
07.11.2012, 11:01
Hallo Hans,
du hast also einen Task definiert, der immer nur Einzelwerte ("1 Wert auf Anforderung") ausgeben soll.
- Diesem Task übergibst du eine Waveform - ich persönlich würde darauf tippen, dass nur deren erster Wert ausgegeben wird...
- Zweiter Fehler: dieser Task wird auch noch fortlaufend (bei jedem Aufruf deines VIs) auf's Neue gestartet, ein Wert ausgegeben und sofort danach wieder gestoppt (und gelöscht!). Wenn du darüber nachdenkst: Hälst du das selbst für sinnvoll?
Hast du schon mal die Digitalausgabe mit Hardware-Timing ausprobiert? Lt Specs deiner Karte sollte das funktionieren...
Da gibt es garantiert auch Beispiele im Examplefinder zu!
du hast also einen Task definiert, der immer nur Einzelwerte ("1 Wert auf Anforderung") ausgeben soll.
- Diesem Task übergibst du eine Waveform - ich persönlich würde darauf tippen, dass nur deren erster Wert ausgegeben wird...
- Zweiter Fehler: dieser Task wird auch noch fortlaufend (bei jedem Aufruf deines VIs) auf's Neue gestartet, ein Wert ausgegeben und sofort danach wieder gestoppt (und gelöscht!). Wenn du darüber nachdenkst: Hälst du das selbst für sinnvoll?
Hast du schon mal die Digitalausgabe mit Hardware-Timing ausprobiert? Lt Specs deiner Karte sollte das funktionieren...
Da gibt es garantiert auch Beispiele im Examplefinder zu!
07.11.2012, 13:25
Hey danke für die Antworten.
Gerd, zum 1. Fehler. Es werden alle Werte übergeben und nicht nur der erste. Deswegen halte ich Wert auf Anforderung für akzeptabel da wir ja wirklich die Werte auf dem Oszi haben.
Zum 2. Fehler. Ich hab das jetzt so verstanden, dass ich eine while schleife um die Signalerzeugung und "Schreiben" packe. Ändert allerdings nichts am Signal.
Das Signal sieht folgendermaßen aus:
[attachment=42146]
Unser 0101 Signal
[attachment=42147]
hier im zeitlichen Ablauf. Zwischen den 4 Signalen.
Das Problem an der Sache ist, das die Signale nur alle 3,2ms erscheinen. Wie kann ich diesen Abstand verkleinern?
Hier der Screenshot einer anderen Vi mit genau dem selben Ergebnis:
[attachment=42145]
Hier zum Download: [attachment=42144]
Gerd, zum 1. Fehler. Es werden alle Werte übergeben und nicht nur der erste. Deswegen halte ich Wert auf Anforderung für akzeptabel da wir ja wirklich die Werte auf dem Oszi haben.
Zum 2. Fehler. Ich hab das jetzt so verstanden, dass ich eine while schleife um die Signalerzeugung und "Schreiben" packe. Ändert allerdings nichts am Signal.
Das Signal sieht folgendermaßen aus:
[attachment=42146]
Unser 0101 Signal
[attachment=42147]
hier im zeitlichen Ablauf. Zwischen den 4 Signalen.
Das Problem an der Sache ist, das die Signale nur alle 3,2ms erscheinen. Wie kann ich diesen Abstand verkleinern?
Hier der Screenshot einer anderen Vi mit genau dem selben Ergebnis:
[attachment=42145]
Hier zum Download: [attachment=42144]
07.11.2012, 15:13
Hallo Hans,
Wenn ihr das VI wiederholt aufruft, braucht ihr den Task nur einmal starten und stoppen, und zwar außerhalb dieser aufrufenden Schleife!
Zitat:Das Problem an der Sache ist, das die Signale nur alle 3,2ms erscheinen. Wie kann ich diesen Abstand verkleinern?Mit jedem Aufruf startet ihr den Task und stoppt ihn wieder. Auch diese Aufrufe brauchen Zeit, ich würde mal schätzen so ca. 3-3,2ms...
Wenn ihr das VI wiederholt aufruft, braucht ihr den Task nur einmal starten und stoppen, und zwar außerhalb dieser aufrufenden Schleife!
08.11.2012, 21:17
Wir haben das ganze bereits in eine while Schleife gepackt, aber geändert hat das an dem Ergebnis nichts.
08.11.2012, 21:23
Hallo Hans,
ich schrieb:
Du schreibst:
Siehst du den Unterschied?
ich schrieb:
Zitat:braucht ihr den Task nur einmal starten und stoppen, und zwar außerhalb dieser aufrufenden Schleife!
Du schreibst:
Zitat:Wir haben das ganze bereits in eine while Schleife gepackt
Siehst du den Unterschied?