LabVIEWForum.de
Leistungsmessung mit CompactRIO - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Leistungsmessung mit CompactRIO (/Thread-Leistungsmessung-mit-CompactRIO)

Seiten: 1 2


Leistungsmessung mit CompactRIO - Benjamin84 - 15.04.2008 14:06

Hallo,
ich habe mal eine etwas umfangreichere Frage. Ich möchte eine Langzeitleistungsmessung durchführen.
Als Hardware habe ich eine
CompactRIO 9072
Mit den Einschub NI 9215
Leider weiß ich nicht genau in welcher Datenform ich die Messwerte verarbeiten soll. In der FPGA der CompactRIO bekomme ich die Werte als FXP (Fließkomma) dargestellt.
Habt ihr vielleicht ein Idee wie ich die Werte am sinnvollsten weiter verarbeite ? Falls jemand eine Idee hat wie man dabei am besten vorgeht, dann wäre es nett wenn ihr es posten würdet.
Ich habe überlegt ob ich die Messwerte in ein Array schreibe und als Array an den Echtzeitprozessor übertrage.
Vielen Dank
Gruß Benjamin


Leistungsmessung mit CompactRIO - jhoormann - 15.04.2008 14:44

Ich würde auf die Übertragung vom FPGA zum RTSystem auf ein Array verzichten, es ist sehr langsam. Die Daten kannst du dir auch als Rohdaten auslesen und ebenso die Kalibrirungsdaten von dem Analogmodul, diese können dann im RT-System z.B. in float selbst umgerechnet werden, hierfür gibt es im Examplefinder Bespiele.


Leistungsmessung mit CompactRIO - thomas.sandrisser - 16.04.2008 02:15

wenn du 8.5.1 mit rio 2.4 hast, dann nimm direkt die FXP darstellung.
d.h. lass dir die werte im FPGA bereits kalibrierter vom AI node zurueck geben, wandle diese in ein boolsches array um und dieses wiederum in einen U32. die werte uebertraegst dann am einfachsten per DMA an den host. dort alles wieder zurueck wandeln und feddich.

Im fpga koenntest du noch eventuelle verrechnungen durchfuehren sofern diese nicht allzu aufwendig sind.
hierfuer kannst dir unter ni.com/lab die FXP bibliothek downloaden


Leistungsmessung mit CompactRIO - Benjamin84 - 16.04.2008 13:06

Vielen Dank für die schnelle Antwort. Ich habe es heute mal ausprobiert und leider nicht richtig hinbekommen. Deshalb habe ich noch einige Fragen. Ich habe mein kleines Testprogramm mal angehängt.
1) Warum kann ich den FXP-Datentyp nicht direkt auf das RT-System übertragen ?
Weshalb diese Umwandlung in ein Boolsches Array und dann in U32, was bewirkt diese.

2) Leider entsprachen die im RT-System angezeigten Werte nicht den angeschlossenen Eingangssignalen. Kann es sein das sich durch die Umwandlung das Komma verschiebt oder verloren geht.

3) Kann ich zur Einstellung der Abtastrate die zeitgesteuerte Schleife verwenden wie ich es im Programm verwendet habe oder wird dies in kleinen Zeitbereichen ungenau ?

Vielen Dank im voraus
Gruß Benjamin

[attachment=12022]
[attachment=12021]


Leistungsmessung mit CompactRIO - thomas.sandrisser - 16.04.2008 13:15

die zeitgesteuerte schleife unter FPGA hat nur die gleiche appearance aber net den gleichen flavor. unter FPGA heisst die schleife single-cycle timed loop (SCTL) und in dieser koennen nur funktionen verwendet werden, die nativ 0 oder max 1 tick benoetigen. dein ai benoetigt in abhaengigkeit der abtastrate x ticks, definitiv aber immer mehr als 1 tick.
ein loop timer reicht voellig aus.

der fxp datentyp ist aktuell noch nicht im c-strom erfasst, deshalb die umwandlung damit dieser per DMA gesendet werden kann.
Die umwandlung in das boolsche array hat zur folge dass du im prinzip vorkomma und nachkomma als 32 bit darstellst (du kannst auch weniger oder mehr jedoch aktuell max. 64 bit nehmen). Die ersten x stellen sind die vor und die zweiten y stellen die nachkommawerte. diese kannst du wiederum in einen u32 konvertieren, der aktuell vom DMA verlangt wird....

wenn die werte nicht korrekt sind, dann ist es moeglich, dass du entweder die automatische konvertierung nicht aktiviert hast oder noch den alten rio treiber verwendest.
wenn du auf das c-series modul im project manager einen rechtsklick machst und in die properties gehst, dann musst du die angehaengten einstellungen sehen. wenn das nicht der fall ist, dann lad dir aus dem example finder ein default beispiel, wo gezeigt wird wie man die kalibrierdaten aus dem cseries modul ausliest und in die physikalische einheit konveritert.


Leistungsmessung mit CompactRIO - Benjamin84 - 16.04.2008 15:01

Danke für die schnelle Antwort. Leider klappt es immer noch nicht. Wenn ich das FPGA wie im Anhang programmiere, dann „verliere ich doch die Kommastelle“ da ich es in ein Integer umwandeln. Es muss doch einfach möglich sein die Messwerte zu übertragen. Kann man diese Tricks mit dem Boolschen Array irgendwo nachlesen oder muss man so was einfach wissen.
Hat jemand vielleicht ein Beispielprogramm.
Danke im Voraus
Gruß Benjamin


[attachment=12034]


Leistungsmessung mit CompactRIO - thomas.sandrisser - 17.04.2008 02:00

vergiss net auf den rechtsklick bei boolean array to number


Leistungsmessung mit CompactRIO - Benjamin84 - 17.04.2008 10:39

Danke ich denke jetzt klappt es.
Aber kann es sein, dass ich mit dieser Methode negative Werte nicht richtig übertragen kriege ?? Wenn nicht dann liegt das wohl an meinem Messaufbau.
Danke Gruß Benjamin


Leistungsmessung mit CompactRIO - Benjamin84 - 17.04.2008 15:53

Hallo,
langsam bin ich am verzweifeln. Jetzt kann ich mir zwar die Werte anzeigen lassen aber wenn ich im FPGA noch eine Multiplikation durchführen will, kriege ich kein richtiges Ergebnis angezeigt. Hat jemand eine Idee ?? Im Anhang sind die VI als Jpg.

Alles was ich will ist das Produkt von zwei Eingangssignalen zu bilden um es dann im RT-System über der Zeit zu Integrieren. Ich hätte nicht gedacht das dies so schwer wird.
Danke im Voraus
Gruß Benjamin

[attachment=12065][attachment=12066][attachment=12067]


Leistungsmessung mit CompactRIO - thomas.sandrisser - 18.04.2008 01:57

ich glaube du hast das prinzip noch net so ganz verstanden.
wenn du die werte ohne irgendwelches buffering an den host uebertragen willst, dann musst du NICHT die umwandlung in einen U32 wert veranstalten.
Wenn du am Host mit dem Read/Write Control zugreifst, dann ist das ein registerzugriff im sinne von on demand und keine gepufferte erfassung.

wenn ich mir deinen code ansehe, dann willst du auch nichts anderes machen als lediglich den aktuellsten wert auslesen ohne irgendeine handshaking aktion durchzufuehren.
in diesem fall, schreib direkt in einen indikator im fpga und verwende die read/write funktion am host.



hier zur frage warum ein falscher wert raus kommt:
du erfasst einen I16 wert und typecastest diesen zu einem U32 -> vorzeichen verschwindet und fliesst in die zahl ein. zudem multiplizierst du einen u32 mit einem u32 wert. du beruecksichtigst niergends einen ueberlauf. wenn du am host den U32 wert in einen I16 zurueck castest, kommt wieder das richtige ergebnis raus.
diese information ist jedoch hinfaellig, wenn du kein DMA verwendest und direkt die indikatoren repsektive register ausliest.


ich glaube, du solltest den example finder oeffnen und fpga - crio getting started beispiele ansehen und diese fuer den anfang verwenden