LabVIEWForum.de
Datenerfassung - trennen einzelner Zyklen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW FPGA (/Forum-LabVIEW-FPGA)
+---- Thema: Datenerfassung - trennen einzelner Zyklen (/Thread-Datenerfassung-trennen-einzelner-Zyklen)

Seiten: 1 2 3


Datenerfassung - trennen einzelner Zyklen - webghost - 16.07.2015 10:00

Guten Tag zusammen,

ich arbeite im Moment an der Software zur Steuerung, Datenerfassung und Auswertung eines Prüfstands. Die Datenerfassung soll mit dem FPGA einer cRIO (9022) gemacht werden. Das Thema FPGA ist für mich komplettes Neuland. Von NI hab ich ein paar Webcasts angesehen und Nachgelesen, soweit ist mir klar wie das ganze funktioniert.
Nur habe ich noch ein Problem: Der Prüfstand fährt verschiedene Zyklen nacheinander mit verschiedenen Parametern durch (z.B. andere Geschwindigkeit). Die Daten möchte ich nach jedem Zyklus (ein Zyklus dauert grob geschätzt max. 10 sec) auf dem RT System auswerten. Nun benötige ich noch eine Möglichkeit wie ich die einzelnen Zyklen auseinanderhalten kann, denn die Anzahl der Messwerte variert. Wie kann ich dies am besten umsetzen?

Viele Grüsse

PS: Nochmal die Systemdaten: cRIO 9022, 32AI 16bit - 9205, 32DI - 9403 und LV 2013


RE: Datenerfassung - trennen einzelner Zyklen - GerdW - 16.07.2015 10:38

Hallo ghost,

generelle Antwaort auf diese unspezifische Frage:
Du suchst dir ein Messsignal deines Prüfstandes, anhand dessen du das Ende/den Anfang eines Zyklus erkennst. Dieses nutzt du dann, um deine Messdaten den Zyklen zuzuordnen…

Zitat:Software zur Steuerung, Datenerfassung und Auswertung eines Prüfstands.
Da dein System den Prüfstand anscheinend auch steuert, sollte deine Software eigentlich wissen, wann ein neuer Zyklus beginnt!
Was genau ist deine Frage??? Hmm


RE: Datenerfassung - trennen einzelner Zyklen - webghost - 16.07.2015 10:55

Hallo Gerd,

danke schonmal für deine Antwort.

(16.07.2015 10:38 )GerdW schrieb:  
Zitat:Software zur Steuerung, Datenerfassung und Auswertung eines Prüfstands.
Da dein System den Prüfstand anscheinend auch steuert, sollte deine Software eigentlich wissen, wann ein neuer Zyklus beginnt!
Was genau ist deine Frage??? Hmm
Richtig, die Software weiss wann ein neuer Zyklus beginnt. Allerdings ist dies im RT Teil der Software, der ja wesentlich langsamer Abläuft. Hier ist nun mein Problem, wie kann ich die beiden Teile sychronisieren?
Wenn ich die Messwerte des FPGA in einen FIFO schreibe werden sie gebuffert, folgedessen könnten sie zeitlich verzögert auf dem RT System ankommen (oder liege ich hier falsch?). Mein Wunsch bzw Gedanke wäre das jeder Zyklus als separates File oder Array klar abgetrennt auf dem RT System ist.

Gruss


RE: Datenerfassung - trennen einzelner Zyklen - GerdW - 16.07.2015 11:00

Hallo ghost,

Zitat:Allerdings ist dies im RT Teil der Software, der ja wesentlich langsamer Abläuft
Der RT-Teil steuert aber (idealerweise), was im FPGA abläuft. Und der RT-Teil kann mit dem nächsten Zyklus warten, bis die Messdaten für den aktuellen eingesammelt sind…

Zitat:Wenn ich die Messwerte des FPGA in einen FIFO schreibe werden sie gebuffert, folgedessen könnten sie zeitlich verzögert auf dem RT System ankommen (oder liege ich hier falsch?).
Jein. Durch den FIFO kommt es sicherlich zu einer Verzögerung.
Aber:
- Über welche Datenraten reden wir hier?
- Über welche Timings im RT-Teil reden wir hier?
- Wie lange dauert ein Zyklus?

Beispiel: Wenn du im RT alle 10ms den FIFO ausliest, hast du eine Verzögerung von max. 10ms. Setze das in Relation zu deinen Sampleraten und Zykluszeiten!


RE: Datenerfassung - trennen einzelner Zyklen - webghost - 16.07.2015 11:39

zu deinen Fragen:
- Ein Zyklus wird im Bereich von 5 - 10 sec liegen.
- der Zeitkritische Teil des RT ist auf 5 ms getimmt.
- Die Datenrate ist noch nicht ganz klar. Fest steht es sollen alle Eingänge der Karten erfasst werden, das wären 32 x 16 bit (AI) + 32 x 1 bit (DI). Damit wären wir bei 544 bit. Die Abtastfrequenz ist noch nicht genau definiert, es sollen aber kurzfristige Peaks erfasst werden, deren Dauer ich noch nicht genau kenne. Ich schätze aber das die Abtastfrequenz in einem Bereich von 10 - 100 kHz liegen wird. Somit dürften es 5440 bis 54400 kbit/s sein.

Die Zyklen sind Bewegungen und sollen flüssig hintereinander sein, daher sollte eine Wartezeit zwischen den Zyklen nicht länger als 20-30 ms dauern.

Gruss und guten Apetitt Cool


RE: Datenerfassung - trennen einzelner Zyklen - GerdW - 16.07.2015 11:50

Hallo ghost,

Zitat:- Ein Zyklus wird im Bereich von 5 - 10 sec liegen.
- der Zeitkritische Teil des RT ist auf 5 ms getimmt.
Wir reden also über eine zeitliche Unschärfe von 5ms/5s = 0.1%? Oder bei 100kHz Samplerate von 500 Samples?

Nochmal: wenn du die Zyklen genau abrechnen willst, benötigst du ein Signal, aus dem der Zyklusstart genau hervorgeht. Dies könnte bei Bewegungen z.B. ein passender Encoder sicherstellen…

Zitat: sollte eine Wartezeit zwischen den Zyklen nicht länger als 20-30 ms dauern.
Das sind immer noch 4-6 Schleifeniterationen deiner RT-Datenerfassung. Das sollte doch ausreichen, um Zyklen zu trennen?


RE: Datenerfassung - trennen einzelner Zyklen - webghost - 16.07.2015 15:30

Hallo Gerd,

ich versuche mal die Zyklen zu trennen und melde mich dann noch nochmals.

Im Moment habe ich ein Problem mit dem FIFO, er sagt mir das alle DMA belegt sind, nur wo finde ich das entsprechende Fenster dazu?
Vermutlich belegt die Scan Engine, welche ich zuerst verwendet hab, noch DMAs...

Im Anhang befindet sich die entsprechende Meldung.

Gruss


RE: Datenerfassung - trennen einzelner Zyklen - GerdW - 16.07.2015 15:44

Hallo ghost,

jedes NI-FPGA-Target verfügt über eine begrenzte Anzahl DMA-Kanäle. Einige davon belegt die ScanEngine. Wenn du alle DMA-Kanäle benötigst, dann musst du die ScanEngine deaktivieren und deinen FPGA vom Hybrid-Modus auf reinen "nicht-ScanEngine"-Betrieb umschalten (aka konfigurieren)…


RE: Datenerfassung - trennen einzelner Zyklen - webghost - 16.07.2015 15:57

Soweit ich das beurteilen kann hab ich das auch gemacht: Rechtsklick auf das Chassis im Project Explorer --> Properties --> Programming Mode und den auf "LabVIEW FPGA Interface" stellen, anschliessend noch Deploy all im Project Explorer.

mfg


RE: Datenerfassung - trennen einzelner Zyklen - GerdW - 16.07.2015 15:58

Und zwischendrin das FPGA.vi kompilieren?