LabVIEWForum.de - Anzahl von wiederholenden Spannungssignalen aufzeichnen

LabVIEWForum.de

Normale Version: Anzahl von wiederholenden Spannungssignalen aufzeichnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo Special,

das DAQmxRead gehört in die Schleife, und du brauchst auch keine Matrix-Funktion zum Bauen eines 2D-Arrays...

Alles weitere, wenn ich wieder am Rechner bin...
Hallo Gerd,

ja, dass das DAQmx Read in die Schleife gehört ist natürlich logisch. Confused
Hallo Special,

Zitat:ja, dass das DAQmx Read in die Schleife gehört ist natürlich logisch.
Ja, genau. Wird auch so in den BeispielVIs gezeigt!

Da wird übrigens auch gezeigt, dass man einen DAQmxTask auch wieder löschen sollte, wenn man fertig ist. Und das man beim DAQmxRead eine feste Anzahl Sampes abfragen sollte: typischerweise liest man 1/10 der Samplerate und bekommt so alle 0.1s neue Messwerte:
[attachment=61474]

War dir klar, warum ich im letzten Snippet dieses ArraySubset drin hatte? Das war aufgrund deines CSV-Formats: DAQmxRead liefert aber "nur" Samples und braucht dieses also nicht mehr!
(09.12.2020 07:37 )GerdW schrieb: [ -> ]War dir klar, warum ich im letzten Snippet dieses ArraySubset drin hatte?

Nein, klar war mir das nicht. Ich dachte es sollen Daten vorgespeichert werden.
Das Ergebnis sieht sehr vielversprechend aus.
Noch einmal vielen Dank für deine Zeit und Mühe!
Ich muss auch sagen, dass ich wieder einiges gelernt habe.
Hallo nochmal,

damit ich die Daten am Ende besser Auswerten kann, wäre es gut wenn ich zu jeder Addition eines Signalereignisses einen Zeitstempel aufzeichnen kann.
Dieser Zeitstempel muss nicht in die gleiche Datei geschrieben werden.

Also soll quasi einmal das Signalereignis erfasst werden, was nun schon super funktioniert aber zusätzlich noch die aktuelle Zeit wann dieses aufgetreten ist.
Ich habe mir jetzt einfach mal gedacht, dass man das nach dem gleichen Prinzip abfragt... Wenn der Schwellwert überschritten ist wird über den Boolischen Wechsler ein true ausgegeben und ein Zeitstempel wird erfasst.
Ich habe mich heute durch die Beispiele gelesen. So richtig was gefunden habe ich aber leider nicht.
Die Frage ist ja, ob es so einfach geht wie ich mir das denke Big Grin.

Falls jemand eine Idee hat, kann er mir gerne einen Hinweis geben.

Vielen Dank schon einmal.

[attachment=61479]
Hallo,

Ich habe mich nochmal schlau gemacht bzw. die Beispieldateien durchforstet. Dabei bin ich auf einen interessanten Ansatz gekommen. Das ganze soll über eine Casestruktur realisiert werden. Es sieht im moment wie folgt aus:
[attachment=61487]

Nun ist das Problem, dass sich der Zustand der Casestruktur von 0 auf 1 nicht ändert. Die Frage ist nun natürlich woran das liegt Big Grin.
Geht das evtl. nur mit den Boolschen Ausdrücken? Aber das ist ja eigentlich nichts Anderes, oder?
Ich hoffe mir kann jemand helfen Smile.

#Edit: Ok, ich bin mir relativ sicher, dass es an dem Umwandlungsbaustein vor der Casestruktur liegt.Aber auf eine Lösung komme ich gerade dennoch nicht Sad. Die Anzahl der Ereignisse wird in der TDMS-Datei richtig erfasst, warum werden aber auch Messwerte erfasst, die nicht zu den aufgeführten Kriterien passen?
Hallo Special,

Zitat:Nun ist das Problem, dass sich der Zustand der Casestruktur von 0 auf 1 nicht ändert. Die Frage ist nun natürlich woran das liegt.
Geht das evtl. nur mit den Boolschen Ausdrücken? Aber das ist ja eigentlich nichts Anderes, oder?

#Edit: Ok, ich bin mir relativ sicher, dass es an dem Umwandlungsbaustein vor der Casestruktur liegt.Aber auf eine Lösung komme ich gerade dennoch nicht Sad. Die Anzahl der Ereignisse wird in der TDMS-Datei richtig erfasst, warum werden aber auch Messwerte erfasst, die nicht zu den aufgeführten Kriterien passen?
Wie hast du denn deine Case-Struktur definiert? Welche Cases gibt es denn?
Es gibt einen Case, der ausgeführt wird, wenn genau ein Puls entdeckt wurde. Und es gibt einen Case, der ausgeführt wird, wenn 0 oder eine beliebige Anzahl Pulse außer 1 entdeckt wird! Das hätte man mittels Debugging aber auch leicht sehen können…

Welchen "Umwandlungsbaustein" meinst du? Benutzt du auch mal die Kontexthilfe (Ctrl-H)? Die zeigt dir den korrekten Namen aller Funktionen…

Warum verwendest du immer noch die BuildMatrix-Funktion? Wenn du ein Array bauen willst, solltest du auch BuildArray verwenden!

Warum musst du das Signal zweimal auswerten? Würde es nicht ausreichen, es einmal auszuwerten und das Ergebnis davon zweimal zu verwenden???
(10.12.2020 18:48 )GerdW schrieb: [ -> ]Wie hast du denn deine Case-Struktur definiert? Welche Cases gibt es denn?
Es gibt einen Case, der ausgeführt wird, wenn genau ein Puls entdeckt wurde. Und es gibt einen Case, der ausgeführt wird, wenn 0 oder eine beliebige Anzahl Pulse außer 1 entdeckt wird! Das hätte man mittels Debugging aber auch leicht sehen können…

Welchen "Umwandlungsbaustein" meinst du? Benutzt du auch mal die Kontexthilfe (Ctrl-H)? Die zeigt dir den korrekten Namen aller Funktionen…

Warum verwendest du immer noch die BuildMatrix-Funktion? Wenn du ein Array bauen willst, solltest du auch BuildArray verwenden!

Warum musst du das Signal zweimal auswerten? Würde es nicht ausreichen, es einmal auszuwerten und das Ergebnis davon zweimal zu verwenden???

Hallo Gerd,
nochmal um dich abzuholen, was überhaupt mein Ziel ist. Ich möchte Einspritzsignale eines SCR-Ventils erfassen um am Ende die Häufigkeit und am besten noch die Zeitpunkte dieser Ansteuerung auswerten zu können. Ich habe die Anzahl (oben, quasi dein VI) als Kontrolle zu meinen Ergebnissen im Vi gelassen. Macht ja auch nichts aus oder?

Das Debugging habe ich ehrlich gesagt noch nie verwendet. Wie genau funktioniert das?
Die verwendete Case-Struktur wird ja über den Case-Selektor ausgewählt und laut Kontextmenü zu diesem, soll die Case mit dem Wert 1 ausgeführt werden und bei 0 eben nicht.
Das Kontextmenü an sich nutze ich ständig, aber über die Hilfefunktion Big Grin.

Der Grund, warum ich überhaupt einen zweiten "Ast" (TDMS erstellen und Messwerte schreiben), ist der, dass ich einfach nicht wusste wie ich dies am geschicktesten in den oberen Teil einbaue.

Eine Idee kam mir gestern Abend noch: Kann es sein, dass die Messwerte geschrieben werden, weil für dein Standartcase kein Pfad gebaut wurde?
[attachment=61488]
Hallo Special,

Zitat:Die verwendete Case-Struktur wird ja über den Case-Selektor ausgewählt und laut Kontextmenü zu diesem, soll die Case mit dem Wert 1 ausgeführt werden und bei 0 eben nicht.
Was passiert, wenn der Selektor-Wert ungleich 0 oder 1 ist?
Du hast hier einen numerischen Selektor und keinen boolschen! (Hilfe zur Case-Struktur lesen!)

Zitat:Das Debugging habe ich ehrlich gesagt noch nie verwendet. Wie genau funktioniert das?
LabVIEW-Hilfe, Thema Debugging lesen…
(conditional) probes, Breakpoints, …
(11.12.2020 11:28 )GerdW schrieb: [ -> ]Was passiert, wenn der Selektor-Wert ungleich 0 oder 1 ist?
Du hast hier einen numerischen Selektor und keinen boolschen! (Hilfe zur Case-Struktur lesen!)

Hallo Gerd,
ich habe einfach mal vor Selektor 2 addiert. Dadurch werden keine Messwerte geschrieben....

Ist die Struktur möglicherweise zu langsam? Bahn
Vorher habe ich eher langsame Systeme angeschaut, dort konnte man Werte gut mit einer Sonde überwachen. Hier scheint das nicht so einfach zu funktionieren.
In der Kontexthilfe steht zwar drin, dass die Struktur eine beliebige Anzahl an Cases haben kann, ich aber doch nur 2 definiert habe?

Okay gut ins Debugging muss ich mich nochmal genauer einlesen, das klappt anscheinend nicht ganz so fix.
Seiten: 1 2 3
Referenz-URLs