LabVIEWForum.de - cRIO im Fahrzeug als Logger für "kurze" Events

LabVIEWForum.de

Normale Version: cRIO im Fahrzeug als Logger für "kurze" Events
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Leute!

Ich hab gleich ein paar Fragen zum Thema FPGA. Am besten schilder ich mal die Messaufgabe in aller Schnelle: Ich messe in einem Fahrzeug Beschleunigungen und Drehraten mit meinem cRIO9004. Ich messe für eine kurze Zeit von ca. 3 Skeunden.
Intern hat das cRIO eine 512 MB große Karte. Die will ich also vollschreiben. Bis jetzt habe ich die FPGA-Routine und ein HOST.vi, das alles läuft unter Verwendung des FIFO's und auch nur mit Notebook. Was mir fehlt (nach Infos von Kollegen) ist nun folgendes:

Wissen, wo das host.vi letzlich läuft (auf dem Notbook oder im cRIO),
Erzeugen einer .exe-Anwendung, so dass das cRIO bei Neustart die beiden VI's startet,
Zus. Programmierung einer Schalterabfrage, die die Messung startet,
Schreiben auf die interne Karte, von der ich nicht einmal weiss, wie ich sie ansprechen soll.

Hat jemand schon einmal Ähnliches erlebt? Ich bin froh um jeden Tipp, denn NI verweist nur auf die Beispiele, in denen ich aber nicht fündig werde...
Nächsten Freitag will ich im Fahrzeug messen und ich habe das Gefühl, dass ich am ehesten jemand brauche, der prof. LV-Software-Engineering macht...

Servus Ihr und Danke für Tipps!
SpaceklausHuh
Ich werd mal versuchen deine Fragen/Bedenken aufzuklaeren.

Wenn ich dich richtig verstehe, hast du das kompilierte FPGA VI vorliegen und ein Host VI (wobei sich hier die Frage stellt, ob es sich um das RT oder Windows Host VI handelt).

Wenn du in deinem "Host.vi" die FPGA Referenzen verwendest + FIFOs, dann muss es sich zwangslaeufig um das RT Host.vi handeln.


Nachdem du die Messung nach einem User Input starten willst, kannst du ggf. eine digitale Leitung einer deiner cRIO Module opfern und ganz einfach dem Signalfluss angepasst, am Anfang deines FPGA Programmes den Pegel der digitalen Leitung pollen und nach einem Flankenwechsel die gesamte Messung am FPGA starten.

Die zweite Sache ist die "autoload" Funktion deines lvbit files. Deiner Beschreibung nach sind beide voneinander abhaengig, bzw. das FPGA VI nimmt Daten auf und streamed diese an den RT Host. Dem zu Folge macht es keinen Sinn das lvbit file mittels autoload Funktion in den Flash Memory zu legen.
Deshalb solltest du an dieser Stelle folgendermaßen vorgehen: Application Builder starten und dein RT Host.vi als Haupt-VI angeben und ganz wichtig, das lvbit file als Supported File!
Danach bestaetigst den Dialog mit Ok und machst im Project Explorer auf den neuen Eintrag unter "Build Specifications" einen rechtsklick und waehlst die 1. Option aus "Set as Startup". Danach nochmals einen rechtsklick -> Build -> im Anschluss nochmals rechtsklick und Download.
KB zu diesem Thema

Wennst diese Prozedur feddich hast, wird bei jedem Neustart des Controllers die .rtexe geladen!
Wennst dann den FPGA Teil noch durch die Aktion mit dem Flankenwechsels erweitert hast, wird die Messung zu einem bestimmten Zeitpunkt gestartet!

Die Frage bezueglich der Speicherung ist auch sehr schnell abgehandelt -> einfach net umdenken, sondern gleich implementieren als ob du unter Windows arbeiten wuerdest (siehe Screenshot)
Das einzige was du beachten musst ist, dass du NICHT mehr Daten schreibst als die Festplatte hergibt. Es kommt naemlich unter Umstaenden vor, dass die Karte durch das "ueberschreiben" unbrauchbar wird! Die einzige Abhilfe in diesem Fall ist es, die CF auszubauen und per Hand zu formatieren!

[attachment=3287]

Gutes gelingen!
Hallo freedive!

Ich bin nun dran, die ganzen Tipps Deinerseits umzusetzen, dann schreib ich wieder, wie es so läuft bzw. was ich auf welchem Wege hingekriegt habe. danke für die ausführliche Antwort, sie ist extrem gut für mich als Anfänger!

Bis später mal oder morgen, schönen Sonntag noch

Klaus
Hallo nochmal!

Im Project Explorer ist das Host.vi unter meinem cRIO zu finden, also ein RT.vi, odder?

Das Speichern geht nun problemlos, habs mit nem Measurment File erledigt. Der Ratschlag die Karte nicht übervoll zu machen ist sehr wichtig, danke dafür extra.

Jetzt ist es aber so, dass ich im FPGA das FIFO voll schreibe und es nach getaner Messung ausgelesen wird. Das ganze muss, soweit ich das verstanden habe (Examples), mit FIFO Write und FIFO Read in einer Schleife laufen. Auch das Schreiben in das Measurement File sollte in der Schleife mit ablaufen, nicht? Das probier ich dann mal alles zusammen.

Vorher mache ich aber die anderen Sachen: Messung über Messeingang mit Signalauswertung starten und VI-Start über rt.exe direkt nach Neustart meiner kleinen RT-Engine. Einziges Ding dabei ist, dass ich alle 12 vorhandenen Analog-Kanäle für meine Messungen brauche und leider kein Dig. I/O-Modul zur Hand ist. So muss ich das letzte vorhandene Analogmodul einstecken (32 Ch., nondiff.) und eine kleine Signalanalyse einbauen. Sollte mir nach alldem gelingen! Ich schätze, ich nehm nen Taster mit Batterie und analysiere das Signal auf einen Schwellwert hin, so dass ich per Interrupt die Messroutine auslöse. Den Interrupt hab ich irgendwo auch schon gesehen...

So denn, ich verabschiede mich für jetzt und freu mich über alles Neue!

Klaus
Hallo erneut!

Meine DAQ-Aufgabe ist folgende: 5 Minuten messen und kontinuierlich wâhrend der Messung in eine Datei speichern.
Ich hänge an den Schleifen, die für meine DAQ-Aufgabe brauche. Ich habe nun ein While Loop (FPGA IO Nodes und Build Array) und nachfolgend zwei Timed Loops je für FIFO Write und FIFO Read. Kann man das so programmieren?
Habe leider keine passenden Beispiele gefunden, daher meine Anfrage.

Grüsse

SpaceklausBlink
aem, gute frage - aber so wie es sich liest -> nein

im FPGA VI hast du eine schleife mit der datenerfassung und zusaetzlich ein DMA (FIFO) write mit vorzugsweise einer tiefe von 4095 samples. Die schleife taktest nach deinen belieben...

im rt host vi holst dir die werte per invoke node vom DMA empfangsspeicher ab!
je nachdem wie hoch deine sample rate ist kannst du entweder direkt in die datei schreiben, order alle werte sammeln und nach den 5min in die datei schreiben (an der stelle muesstest dann vorzugsweise das array vorinitialisieren und mit der funktion replace array subset arbeiten) oder du verwendest am rt host zwei timed loops (unterschiedliche prioritaeten) und uebergibst die werte von der einen zur anderen per RT FIFO...
' schrieb:aem, gute frage - aber so wie es sich liest -> nein

im FPGA VI hast du eine schleife mit der datenerfassung und zusaetzlich ein DMA (FIFO) write mit vorzugsweise einer tiefe von 4095 samples. Die schleife taktest nach deinen belieben...

im rt host vi holst dir die werte per invoke node vom DMA empfangsspeicher ab!
je nachdem wie hoch deine sample rate ist kannst du entweder direkt in die datei schreiben, order alle werte sammeln und nach den 5min in die datei schreiben (an der stelle muesstest dann vorzugsweise das array vorinitialisieren und mit der funktion replace array subset arbeiten) oder du verwendest am rt host zwei timed loops (unterschiedliche prioritaeten) und uebergibst die werte von der einen zur anderen per RT FIFO...

Hallo Freedive!

Mensch; so eine Antwort! Danke dafür!
Kein Wunder, dass es mit meiner jetzigen Konfiguration nicht gehen konnte. Also; ich probier das nun alles mal aus.

Bis bald

Spaceklaus
' schrieb:aem, gute frage - aber so wie es sich liest -> nein

im FPGA VI hast du eine schleife mit der datenerfassung und zusaetzlich ein DMA (FIFO) write mit vorzugsweise einer tiefe von 4095 samples. Die schleife taktest nach deinen belieben...

im rt host vi holst dir die werte per invoke node vom DMA empfangsspeicher ab!
je nachdem wie hoch deine sample rate ist kannst du entweder direkt in die datei schreiben, order alle werte sammeln und nach den 5min in die datei schreiben (an der stelle muesstest dann vorzugsweise das array vorinitialisieren und mit der funktion replace array subset arbeiten) oder du verwendest am rt host zwei timed loops (unterschiedliche prioritaeten) und uebergibst die werte von der einen zur anderen per RT FIFO...


Hallo Freedive!

Zwei Fragen noch:

im FPGA programmiere ich Samplen, Build Array und FIFO Write in eine Schleife, nicht wahr?

im Host will ich zwei Timed Loops, in der einen steht wohl FIFO Read. Aber was soll ich in die zweite schreiben? Wie funktioniert das Spiel mit den beiden Schleifen?

Grüsse

Klaus
' schrieb:Hallo Freedive!

Zwei Fragen noch:

im FPGA programmiere ich Samplen, Build Array und FIFO Write in eine Schleife, nicht wahr?

im Host will ich zwei Timed Loops, in der einen steht wohl FIFO Read. Aber was soll ich in die zweite schreiben? Wie funktioniert das Spiel mit den beiden Schleifen?

Grüsse

Klaus


Morsche +gaehn+,
im FPGA machst ein Build Array und legst das per Autoindizierung auf eine FoorLoop in der das FIFO Write liegt, genau.
Am RT Host hast eine TimedLoop die die Werte per Invoke Node per FIFO read (DMA Transfer Target to Host) abholt und direkt in einen RT FIFO schreibt. In der 2ten Schleife hast ein RT FIFO Read mit dem du die Werte wieder abholst und in die Datei schreibst.
Solltest du nicht sehr große Datenmengen haben, kannst auch auf die 2te Schleife verzichten und den Dateiinput gleich in der 1. Schleife programmieren.

Ich bin "leider" im Urlaub und deshalb LabVIEW + FPGA + RIO frei, ansonsten haett ich dir das schon lange programmiert :-)
' schrieb:Morsche +gaehn+,
im FPGA machst ein Build Array und legst das per Autoindizierung auf eine FoorLoop in der das FIFO Write liegt, genau.
Am RT Host hast eine TimedLoop die die Werte per Invoke Node per FIFO read (DMA Transfer Target to Host) abholt und direkt in einen RT FIFO schreibt. In der 2ten Schleife hast ein RT FIFO Read mit dem du die Werte wieder abholst und in die Datei schreibst.
Solltest du nicht sehr große Datenmengen haben, kannst auch auf die 2te Schleife verzichten und den Dateiinput gleich in der 1. Schleife programmieren.

Ich bin "leider" im Urlaub und deshalb LabVIEW + FPGA + RIO frei, ansonsten haett ich dir das schon lange programmiert :-)


Hach Freedive!

Das ist perfekt, nun muss es doch auch für mich zu schaffen sein. Ist möglich, dass ich es nach dem Tatort nachher nochmal versuche. Die letzte Beschreibung ist so ausführlich, dass ich es direkt vor Augen habe, ja!

Verzweiflung ereilt mich, wenn ich ein paar LV-Blöcke habe und das Anschliessen nicht so richtig klappt. Ich finde, wohlgemerkt, als Neuling, dass es bei LabVIEW-Funktionsblöcken nicht direkt intuitiv zu erkennen ist, wie und wo man die Parameter alle einstellt. Auch weiss ich, dass man oft zusätzliche Funktionen einbauen muss, dass eine Sache läuft, da bin ich immer ratlos bei der Vielzahl in der Palette. Liegt alles daran, dass ich keinen einführenden Kurs genossen habe, das wirds sein.

Das ist auch sehr nett, dass Du die Sache schon selber programmiert hättest, Danke! Ich muss es aber auch selber schaffen. Wenn Du im Gegenzug Probleme mit der Technischen Mechanik und ANSYS hast, was ja sein könnte, dann kann ich auf dem Feld in mancher Frage weiterhelfen.

So, ich sag mal bis denn und nen sauberen Abend!

Klaus
Seiten: 1 2
Referenz-URLs