LabVIEWForum.de
8 x 2 Sensoren unabh. vonaeinander einlesen. Richtiger Ansatz? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW FPGA (/Forum-LabVIEW-FPGA)
+---- Thema: 8 x 2 Sensoren unabh. vonaeinander einlesen. Richtiger Ansatz? (/Thread-8-x-2-Sensoren-unabh-vonaeinander-einlesen-Richtiger-Ansatz)



8 x 2 Sensoren unabh. vonaeinander einlesen. Richtiger Ansatz? - Matze - 24.08.2010 15:02

Hallo zusammen,

ich habe nun mit meinem ersten, ernsthaften Versuch begonnen, ein RealTime-/FPGA-Projekt umzusetzen. Zuerstmal mit dem FPGA-Teil.
Was heißt das? Dass euch FPGA-Programmierern im LVF nicht so schnell langweilig wird, weil ich nun vermutlich vermehrt Fragen dazu stelle. Lol

Ich möchte einige Analogsensoren einlesen, davon immer 2 parallel. Die Messungen können gleichzeitig gestartet werden, aber auch unabhängig voneinander.
Mein erster Ansatz ist dieser hier:

[attachment=28975]

Mit dem RAW-Format komme ich noch gar nicht zurecht, daher ist hier das Standardformat FXP vorhanden.
Die Case-Strukturen, Schieberegister etc. benötige ich somit mehrmals. Das erschwert die Wartbarkeit etwas, da ich Änderungen ggf. mehrfach durchführen muss. Nur wie das anders geht, weiß ich nicht.
Das kann man auch nicht großartig in SubVIs auslagern.

Im Windows-LabVIEW sind Sequenzstrukturen mit Vorsicht zu genießen. Beim FPGA sind diese meines Wissens die sauberste Lösung, um Schleifen zeitgesteuert auszuführen.

Könnt ihr euch bitte meinen Ansatz ansehen und Verbeserungsvorschläge machen?

Das ganze müsste ich wohl mit einem FIFO, einer Lookup-Table oder einem Memory-Block verbinden. Vermutlich mit letzterem bei evtl max. 7000 Werten pro Messung.

Evtl. ist auch eine Optimierung mit SCTLs möglich. Doch da sehe ich keine Möglichkeit. Analogeingänge kann man darin nicht platzieren und Filter ebenfalls nicht.


8 x 2 Sensoren unabh. vonaeinander einlesen. Richtiger Ansatz? - chrissyPu - 24.08.2010 22:03

Hi,

ganz kurz: Das Timing, das Du verwendest ist ein Loop Timer... Damit hast du zwei in einem Loop, weiß nicht, ob das dann so funktioniert...

Folgender Vorschlag (falls du die gleiche Abtastrate für alle Signale brauchst): Lass die Schleife mit einem Loop-Timer laufen und schalte entsprechend nur die Kanäle zu. Das Timing übernimmt dann die übergeordnete Schleife...

Falls du unabhängiges Timing für alle Kanäle brauchst, wirst Du wohl um eine While-Schleife für jedes Pärchen nicht drumrumkommen...

Noch was zum Nachdenken bzw. testen: Die Konstruktion mit U8-> Bool-Array und das Aufsplitten lässt sich auch mit einem Bitweisen And realisieren. Es könnte sein, dass das performanter ist, weil ich nicht weiß, ob der Compiler Deinen Konstrukt auf das wesentliche zurückführen kann, nämlich eine einfache Durchleitung des Bits, die damit keine Rechenzeit braucht...

Grüße,

ch


8 x 2 Sensoren unabh. vonaeinander einlesen. Richtiger Ansatz? - Matze - 25.08.2010 07:20

Hallo chrissyPu,

vielen Dank für deine Antwort.
Ich benötige für alle Sensoren die gleiche Abtastrate.

Ich habe es mal so umgesetzt. Ob das nun passt, auch mit dem Memory, weiß ich nicht.

[attachment=28979]

Die Boolean-Lösung habe ich von hier, Folie 111:

[attachment=28980]

Es kann gut sein, dass das mit logischen Operationen besser geht. Nur wie, wüsste ich nicht.


8 x 2 Sensoren unabh. vonaeinander einlesen. Richtiger Ansatz? - Matze - 25.08.2010 10:44

Also das mit dem genannten Block-Memory war wohl ein falscher Ansatz.
Ich nehme nun den FIFO "Target to Host - DMA". In dem speichere ich nicht alle Werte, sonden nutze den FIFO nur als Puffer, falls die RealTime-Anwendung länger benötigt als die Erfassung der Daten.
Parallel dazu holt sich die RealTime-Anwendung die Werte aus dem Puffer und kann parallel dazu bereits diese Werte verarbeiten.

Das klingt für mich erstmal schlüssig.Smile