Hallo, warum änder sich der Wert jede 100ms und nicht jede ms, in Vi sind das die Variablen „Anzeige“ und „Echo“ was mache ich falsch mit dem Array
für Version 9
Hallo Bobo,
in der oberen Schleife steht im DAQ-Assistenten, dass er stets 100werte abholt. Das macht bei einer Messfrequenz von 1KHz eben 100ms pro Schleifendurchlauf und also auch für die Anzeige "Echo"
Aber warum all diese überflüssigen lokalen Variablen?? Warum verdrahtest du nicht einfach den Wert den "Echo" bekommt auch an deine "Array initialisieren"-Funktion? Und warum beschreibst du dieses Anzeigeelement mehrfach in einem Schleifendurchlauf mit dem selben Wert?
Und bitte mehr "gerade Drähte" und weniger "Diagrammfläche"! Klingt blöd, ist aber so, weil die Lesbarkeit extrem gesteigert wird, und damit auch die Fehleranhäufungen sinken.
Bei der unteren Schleife: Ich sehe auf Anhieb nur "wait ms" als Timing-Funktion. Die Schleife kann also auch nicht im 1ms-Raster fahren, wenn sie jeden Schleifendurchlauf 50ms warten muss; zusätzlich zu den eh anfallenden Berechenungen.
Ich hab das "Array", von dem du gesprochen hast, nicht gefunden. Bitte erläutere das genauer.
Ich hoffe das hilft schonmal
Gruß
"Anzeige" fragst du in einer parallel Loop per RS-232 nur alle (minimal) 52 ms ab.
"Echo" fragst du per Software-Timing in derselben Loop ab wie das DAQmx-AI-Read. Dein AI-Task läuft mit 1000 Hz Samplerate, du forderst immer 100 Werte pro Read-Operation an -> macht 100 ms.
Gruß, Jens
P.S. Vergiss es übrigens gleich, mit einer 6008 die DIs mit einer (Software-)Taktrate von 1kHz abfragen zu wollen. Einer solcher Software-Takt läuft unter Windows nicht stabil.
EDIT: Mist, Erik war schneller
Bei Samplerate =1000 und 100 Samples pro Lesevorgang muss DAQmxRead immer 100ms warten, ehe wieder die 100 Samples im Buffer sind. Entsprechend ergibt sich die Umlaufszeit der Schleife zu 100ms.
Wenn Du noch einen zweiten, schnelleren Datenerfassungs-Task hast, darf sich der natürlich nicht in dieser Schleife befinden.
Doppelmist: 2 waren schneller..
Ich habe das jetzt bisschen geändert mit den Verbindungen, aber
1.Wenn ich in DAQ Assistenten auf N-Samples mache und 1K dann sagt er mir Fehler, wie kann ich das machen das er 1000 Werte pro Sekunde einliest ?
2. Die Variable Anzeige kommt von einem fertigen VI welches ich in mein Vi eingebunden habe im Datenblatt steht 5000 Werte /s
Ich habe nach einer allgemeinen Idee gefragt bzw. Lösung wie ich das hinbekomme das „Anzeige“ mir 1 Wert / ms ausgibt und mit dem Echo ja genau so
Das Vi
Ich hab mir das VI jetzt nicht nochmal angeschaut, aber
Die Idee war vorher schon OK mit dem kontinuierlichen Lesen. Es waren ja schon vorher 1000Werte pro Sekunde, wobei eben immer 100 am Stück abgeholt wurden. Ich würde empfehlen: zu lesende Samples 100 bei 1KHz und dann alle Werte in ein Diagramm darstellen, dann "siehst" du werte für jede Millisekunde, es wird aber eben nur alle 100ms aktualisiert.
Gefragt hattest du sinngemäß "Warum macht er 100ms-Timing?" nicht "Wie mache ich ein 1ms -Timing", daher die Anworten so, wie gelesen.
Gruß
Ok dann erstmal eine Neue Frage,
Wie frage ich 1000 Werte ab für das Echo Signal?
Hallo nochmal,
na das schrieb ich doch im letzten Post: Je nachdem was du bei "zu lesende Samples" andrahtest/einstellst.
Bei einer Messfrequenz von 1KHz heißt das:
a) stellst du 1000 ein, musst du 1mal pro Sekunde die Daten abholen und bekommst ein Array mit 1000werten.
b) Wenn du 100SamplesToRead einstellst, dann musst du 10mal pro Sekunde Daten abholen. Bei jedem Abholen erhälst du dann ein Array mit 100Werten.
War das besser erklärt?
Gruß
Nochmals, mit einer USB-6008/6009 ist das Auslesen von DIs nur mit Software-Takt möglich, also immer 1 Wert nach dem anderen.
Einen stabilen Software-Takt von 1 kHz bekommst du aber unter Windows nicht hin.
Gruß, Jens
Zu erik.brenncke:
Danke ,dass habe ich auch schon oben verstanden…..:-)
Es ging mir um:
Wenn ich jetzt bei DAQ Assistenten bin (da wo das „Echo“ eingelesen wird) dort ist eingestellt 100 Samples wenn ich das ändere auf 1000 dann kommt aber eine Fehlermeldung!
1.Wie kann ich das Programmieren das eben kein Fehler kommt? Also was muss ich an Verbindungen ändern wenn ich im DAQ 1000 Samples einstelle? Meine Frage war komisch gestellt aber das meinte ich mit „Wie frage ich 1000 Werte ab für das Echo Signal?“
Zu jg:
Also sollte ich das mit 1000 Werten lassen? Also dann nur 10 pro sekunde?
So wie das jetzt aber in meinem Programm läuft sollten das aber 1000 Werte sein.
Jetzt bin ich verwirrt……
Kann man nicht mit Windows in µs auflösen.....Also ich habe das mal gelesen sicher bi ich mir da nicht jetzt ist mir das eingefallen