Hi, ich hab da mal ein paar Fragen zum den DAQ Grundlagen, die sich bis jetzt noch nicht klären ließen.
1: Überall steht, nicht den DAQ Asistenten benutzen, sondern die Blöcke manuel platzieren. Meine Frage ist, wiso, wo ist da der Vorteil, odern beim Assistenten der Nachteil?
2:Samples und Abtastrate: Angenommen ich hab eine Abtastrate von 50 Hz eingestellt, dann wird alle 0,02 Sekunden der Wert eingelesen. Was hat die Anzahl der Samples dann damit zu tun. Wenn ich zum Bsp. ein Sinus hab und auf der Zeitachse entlang gehe, kann ich doch nur zu einer Zeit x, einen Amplitudenwert Y haben, was bringt mir da eine erhöhte Sample Zahl?
Was wird eingelesen, wenn ich ihn auf kontinuierlich einstelle?
Hallo holographics,
zu1
Der DAQ-Assistent ist recht, um schnell mal was zu probieren. Wenn Du mit Fortschreiten der Programmierung feststellst, daß Du die Daten anderst Anzeigen oder bearbeiten möchtest, ist der DAQ-Assi nicht sehr kooperativ.
Da der Assi intern auch mit den Basis DAQ Vi's arbeitet, kannst Du es auch gleich so programmieren. Das ist nicht wirklich schwerer aber viel flexibler.
zu2
Mit der Abtastrate stellst Du die Geschwindigkeit ein, mit der Dein Signal abgetastet wird. Wenn Du ein konstantes Signal hast, bei dem Dir ein erfasster Wert reicht, dann kannst Du wirklich nur ein Sample lesen. Meist hat man da aber noch eine gewisse Streuung, weshalb es sich empfielt mehrere Samples zu lessen und den Mittelwert zu berechnen.
Oder Du möchtest einen Kurvenverlauf ermitteln. Dann mußt Du auch mehrere Samples lesen, die zusammen mit der Abtastrate den Kurvenverlauf ergeben.
Bei der kontinuierlichen Erfassung, wird der Samples Wert benutzt um in Verbindung mit der Abtastrate den Erfassungspuffer zu berechnen, in den Deine Daten zwischengespeichert werden, bevor Du Sie abrufst. (Task Timing)
Ansonsten werden mit der Samples Angabe soviele Werte aus dem Puffer gelesen, der übrigens bei falscher Programmierung schnell mal überläuft.
Grüße
Andreas
zu 2.
Dazu muß man erst mal zweierlei wissen:
a) Die DAQ-Messkarten arbeiten völlig autark, auf ihnen befindet sich gewissermassen ein Echtzeitsystem zum Triggern des ACDs mit der geforderten Rate. Es ist nicht Aufgabe des LV-Programms, jeden Datenpunkt einzeln anzuforderen.
b) Der Daten werden von der Karte in der Regel immer in einen Buffer geschrieben und von dort mit LabVIEW gelesen
Zur Anzahl der Samples:
Diesen Eingang gibt es - um die Verwirrung komplett zu machen - gleich zwei Mal: Einmal im VI Konfiguration und einmal im VI Lesen.
Im DAQRead: gibt die Anzahl von Samples an, die mit einem Mal aus dem Buffer gelesen werden sollen. D.h das DAQRead wartet immer so lange, bis die Karte diese Anzahl von Daten erzeugt und in den Buffer geschoben hat.
DAQ Konfig: Hier wird die Verwirrung noch größer, denn die Bedeutung des Eingangs richtet sich danach, ob die Datenerfassung endlich oder kontinuierlich erfolgt.
Endlich: Die Anzahl Daten, die insgesamt erzeugt werden, also wie oft der ADC getriggert wird. Danach ist der Task zu Ende.
Kontinuierlich: Hier mach die Anzahl der Samples keinen Sinn, und trotzdem existiert der Eingang weiterhin. Man muß hier das Kleingedruckte in der Hilfe lesen, wozu er noch da ist: Er wurde umfunktioniert, leider ohne ihn umzubenennen. Angeschlossen wird dort jetzt die Größe des Buffers. (Wobei LabVIEW hierfür vernünftige Vorgaben macht, so daß der Eingang in der Regel offen bleiben kann)
Zu 1)
kann ich nur sagen, daß die graphischen Programmierumgebung von LV, bei der man ganz schnell ein paar tolle Anfangserfolge bei einfachen Beispielen erreichen kann, leicht zu der Fehleinschätzung verführt, es sei alles viel einfacher und ganz leicht im Vergleich zu andere Sprachen.
Mit den Express-VIs hat man dann aber noch eine neue Potenz der Fehleinschätzungen. Man könnte dann leicht meinen, es sei möglich, ganz Projekte ohne grundlegende Programmierkentnisse und ohne fundierte Kenntnisse bei den physikalischen Gegebenheiten einer Datenerfassung so aus der linken Hand heraus erledigen. Vielleicht mag das sogar mal funktionieren, aber darauf sollte man sich nicht verlassen.
' schrieb:Vielleicht mag das sogar mal funktionieren, aber darauf sollte man sich nicht verlassen.
Das "Vielleicht" kann aber nur bei ganz einfachen Projekten gelten (ich sprech da (mittlerweile) aus Erfahrung).
Ist der DAQ-Express denn um einiges langsamer als die normale Programmierung? Mein Ziel ist es mit etwa 500 Hz eine Spannung einzulesen (mit einem Sample pro Herz) und das schafft er einfach NICHT. Öffne ich den Express-Assistenten kann ich die Messwerte sehen, lasse ich danach mein Programm laufen hat er große Schwierigkeiten bzw verhält sich wie aufgehängt.
Ich habe mal das Bild meines Loops angehängt, sooo schwer kanns doch nicht sein!
Gruß, Sammy
' schrieb:Ist der DAQ-Express denn um einiges langsamer als die normale Programmierung?
Zitat:Ich habe mal das Bild meines Loops angehängt, sooo schwer kanns doch nicht sein!
Naja, langsamer ist er wohl eher nicht.
Er macht halt alles das, was du nicht machen willst. Nämlich Task initialisieren und Task beenden. Und wenn du das in einer Schleife machst, wird halt pro Schleifendurchlauf die Task einmal initialisiert und auch geschlossen. Und das ist es dann, was so lange dauert: das Initialisieren.
' schrieb:Kontinuierlich: Hier mach die Anzahl der Samples keinen Sinn, und trotzdem existiert der Eingang weiterhin. Man muß hier das Kleingedruckte in der Hilfe lesen, wozu er noch da ist: Er wurde umfunktioniert, leider ohne ihn umzubenennen. Angeschlossen wird dort jetzt die Größe des Buffers. (Wobei LabVIEW hierfür vernünftige Vorgaben macht, so daß der Eingang in der Regel offen bleiben kann).
Was nicht in der Hilfe steht: Wenn man eine Puffergröße angibt, so ist es eine
Mindestgröße, d.h. intern kann durchaus ein größerer Puffer reserviert werden.