Hallo, ich taste mit 20kS/s ein Sinussignal ab.
Gebe ich die Daten auf meinem Diagramm aus, sehe ich links und rechts einen kurzen Strich zappeln der auf der Waagerechten hoch und runter läuft, eben meine Amplitude abläuft. Der untere Graph ist ein gespeicherter Signalverlauf. Hier wurde auf das Signal getriggert, eine endliche Zahl von Werten gespeichert und diese dann ausgegeben. Ich möchte aber auch in meiner Live-Anzeige(Diagramm) mein vollständiges Signal sehen, dh Spitze-Spitze und eine endliche Zahl von Perioden.
Aber was muss ich dazu einstellen???
28 Aufrufe und wirklich keiner kann mir helfen?
Hi,
könnte es sein, dass Deiner Schleife ein Timing fehlt? Wie es für mich aussieht (bin nicht so der DAQmx-Nutzer) läuft die durch und wenn alles abgearbeitet ist, wird halt ein Wert von Deiner Karte gesampled. Dann wieder von vorne - ohne Puffer in der Karte (den Du wahrscheinlich nicht hast, weil du Echtzeit-Anzeigen haben willst) ist das nicht deterministisch und du greifst irgendeinen Wert ab, den Du dann in der While-Schleife manuell auf 20 kHz Abtastrate setzt. So du nur einen Wert vergisst, ist Deine Anzeige damit eher falsch als richtig.
Vorschlag: Da für das menschliche Auge ein Update mit 5 Hz eigentlich ausreichend ist: Puffer doch mal 1000, 2000 Werte in der Karte (je nachdem, was die so kann) und lies diese als Block aus und aktualisier damit dann Deine Anzeige. Das ist auf dem Hostrechner auch ressourcensparender als dauernd abzufragen und den Time lag kannst du wahrscheinlich verschmerzen...
Was auch noch ein problem sein könnte ist, dass Zugriffe auf das Frontpanel mehr Rechenleistung brauchen als wenn ich im BD was hin und her schiebe. Auch aus diesen Gründen ist ein Puffern der Daten, bevor man sie anzeigen lässt, keine schlechte Idee...
Viel Erfolg,
ch
PS Da die meisten hier m.E. doch ehr zu den beruflichen LV-Nutzern gehören, sollte man die Nacht nicht zur Antwortzeit hinzuzählen.
Einen ganzen Tag auf die Antwort warten finde ich ehrlich gesagt nicht zu viel verlangt...
' schrieb:28 Aufrufe und wirklich keiner kann mir helfen?
Ein Moderator liest Deine Frage auch nur mal um zu sehen, ob alles mit Deinem Beitrag ok ist.
Und jeder opfert hier freiwillig Zeit, um sich mit einer Frage auseinander zu setzen. Das ist aber noch keine Verpflichtung zu einer Antwort.
Schau mal das Beispiel an. Damit kommst Du selber auf die Lösung.
[
attachment=20871]
Grüße
Andreas
Zitat:könnte es sein, dass Deiner Schleife ein Timing fehlt? Wie es für mich aussieht (bin nicht so der DAQmx-Nutzer) läuft die durch und wenn alles abgearbeitet ist, wird halt ein Wert von Deiner Karte gesampled. Dann wieder von vorne - ohne Puffer in der Karte (den Du wahrscheinlich nicht hast, weil du Echtzeit-Anzeigen haben willst) ist das nicht deterministisch und du greifst irgendeinen Wert ab, den Du dann in der While-Schleife manuell auf 20 kHz Abtastrate setzt.
Also ich stelle über mein TimingVi ausserhalb der WhileSchleife eine kontinuierliche Datenerfassung mit einer Abtastrate von 20kS/s ein. In meiner While-Schleife lese ich dann pro Durchlauf immer einen Sample aus dem Puffer meiner Karte. Aber ich lese doch nicht irgendeinen Wert mit dieser Methode aus, sondern doch eig nach der Reihenfolge (FIFO) oder habe ich da was falsch verstanden??
Das mit dem Auslesen mehrerer Samples gleichzeitig stellt sich einwenig schwierig da. Und zwar muss ich jeden Abtastwert einzeln verarbeiten.
Zitat:Schau mal das Beispiel an. Damit kommst Du selber auf die Lösung.
ich hab hier im mom leider nur V8.2
PS: sorry für mein Drängeln
' schrieb:ich hab hier im mom leider nur V8.2
Dann solltest Du Dein
[
attachment=20875]
Drängeln hat hier den blöden Nebeneffekt, dass Du (bzw. jeder der drängelt) unter Umständen einfach nicht mehr beachtet wird.
Gruß Markus
' schrieb:PS: sorry für mein Drängeln
Ich bin zwar auch kein wirklicher Experte aber ich bin der Meinung, dass du mit deinen Einstellungen eine Fehlermeldung bekommen würdest wenn du deinen Fehlerausgang des DAQmx read mit deinem Abbruchsymbol der while Schleife verbindest. Wenn du einen Windows rechner hast und die while Schleife nicht getaktet ist dann läuft sie so schnell sie kann -->hohe cpu auslast. Und außerdem wird sie glaub ich eh nicht mit 20kHz laufen. Bei Windows vielleicht etwas über 1kHz und das nicht deterministisch. Du hast schon recht mit dem FIFO, aber der Speicher auf der Karte ist auch begrenzt und wenn du zu langsam ausliest ist halt nun irgendwann mal der Speicher voll. Dann gehen Samples verloren und du bekommst eine Fehlermeldung...
Also entweder mehrere Samples auslesen oder es geht nur ca 1kHz Samplerate...
Wie gesagt ich bin nicht so erfahren wie manch anderer hier, aber zumindest müsste etwas wahres dabei sein
gruß johannes
Hi,
unabhängig vom Timing-Problem lag das Problem wohl eher darin, dass immer nur ein Wert in das Signalverlaufsdiagramm geschrieben wrude. Bekommt man raus, in dem man sich das Beispiel von A.Berndsen anschaut....
ch