Hallo Safa,
warum (zur Hölle) legst du in jeder Iteration den DAQ-Task neu an und beendest ihn? Sowas macht man nicht in der Schleife - da gehört nur das DAQ-Read hinein!
- Warum wandelst du deine Waveform nach DDT und dieses nach Array - nimm doch GetWaveformComponents!
- Warum berechnest du einen Mittelwert und wandelst diesen (per nach DDT wandeln) in ein Array mit nur einem einzigen Element, um von diesem Array das Min/Max zu bestimmen? Welcher Wert wird da wohl berechnet werden...
- Warum benutzt du eine lokale Variable des Graphs, anstatt dessen Anschluß zu verwenden?
Siehe Anhang...
Jetzt überlege bitte nochmal, wie du Min/Max der Waveform bestimmen kannst...
Hallo,
sorry für die späte Rückmeldung. Kam aufgrund meiner Arbeit nicht zum Basteln
Habe nun die min/max Werte plotten können und nur das DAQ-Read in der Schleife. Den Rest außerhalb. Leider erhalte ich nach zahlreichen Durchlaufen meines Programmes folgende Fehlermeldung:
"
Fehler - 200279 ist bei DAQmxRead (Analog 1D Wfm NChan NSamp).vi:1 aufgetreten.
Measurements: Es wurde versucht Abtastwerte zu lesen, die nicht mehr zur Verfügung stehen. Der angeforderte Abtastwert war zuvor verfügbar, wurde jedoch überschrieben.
"
Dieser Feler tritt immer an unterschiedlicher Stelle auf. Das Programm läuft manchmal zehn mal durch, manchmal nur 4 mal....
Wenn ich nun wieder alles, wie in meinem Bsp-VI, in die Schleife packe, funktioniert alles tadellos.
Was ist nun falsch?
schöne Feiertage an euch alle und einen guten Rutsch.
Gruß,
Safa
Hallo,
du liest zu langsam aus. Vorher hast du immer neu Initializiert und dann ein paar Werte gelesen, um anschließend sofort wieder zu Beenden. Jetzt liest du kontinuierlich von der Aufzeichnung. Allerdings langsamer als gesampelt wird. Somit werden die im Puffer befindlichen Daten überschrieben und du bekommst die obige Fehlermeldung. Also entweder langsamer Sampeln, oder schneller auslesen.
Gruß Richard
Hallo Safa,
du holst die Werte zu spät ab - dann passiert das, was in der Fehlerbeschreibung erläutert wird...
Deshalb:
- öfter mal das DAQRead aufrufen
- größere Blöcke per DAQRead abrufen
- ordentliche Fehelrbehandlung implementieren (im einfachsten Fall: Wenn Fehler -200279 Dann DAQTask neu starten)
Hallo,
wünsche erstmal ein frohes neues Jahr
Habe den Rat "entweder langsamer Sampeln, oder schneller auslesen" bzw. "öfter mal das DAQRead aufrufen" befolgt.
Dies hatte zur Folge, dass das Programm weiter durchlaufen wurde. Statt 40 Durchläufen schaffe ich nun 103. Danach erscheint leider wieder die
gleiche Fehlermeldung
Habe ein Bsp-VI angehangen. Vielleicht finden wir den Fehler so schneller ?!
Alle unnötigen Informationen wurden aus dem VI gelöscht. Das VI macht also nachfolgend wenig Sinn, zeigt aber durchaus den groben Ablauf meines Programmes in vereinfachter Form.
Kann ich nicht einen bestimmten Speicherplatz für den Durchlauf des Programms reservieren, sodass LabVIEW einfach einen riesen Puffer zur Verfügung gestellt bekommt?
Gruß,
Safa
LabVIEW 8.6:
Man muß nicht jeden Kanal in einem Task einzeln initialisieren:
Auf die Kanal-Konstante klicken, "wählen", mit shift- Strg - Tast wie in Windows üblich die Kanäle auswählen:
[
attachment=31516]
Danke Lucki für den Tipp. Werde ich mir für die Zukunft merken.
Bin leider noch nicht weitergekommen. Habe mein Programm nun merhmals umgeschrieben, indem ich mir die verschiedenen Beispiele zur Signalerfassung in LabVIEW angesehen habe. Keiner dieser Beispiele brachte das gewünschte Ergebnis
Habt ihr vielleicht nochmal einen Tipp für mich?
Gruß,
Safa