LabVIEWForum.de - Auswerten, zwischenspeichern und zusammenführen verschiedener Bytes

LabVIEWForum.de

Normale Version: Auswerten, zwischenspeichern und zusammenführen verschiedener Bytes
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum,

ich bin ein ziemlicher Neuling (1 Woche Erfahrung) was Labview angeht und stehe bereits vor einem riesigen Problem auf das ich keine Lösung im Forum oder bei Google finden konnte Angry.
Und zwar habe ich einen NI 9157 FPGA auf dem unter anderem eine NI 9871 RS 422 Schnittstelle aufgesteckt ist. Labview 13 und Rio Driver usw. habe ich installiert. Nun soll über die RS422 Schnittstelle der Wert eines Laser Sensors ausgelesen Werden. Der Messwert wird allerdings auf 3 Datenbytes verteilt also 3 Verschiedene Telegramme.
Die Datenbytes haben eine Wertigkeit welche an den ersten 2 Bits wie unten zu sehen ist erkannt.
Low BYTE [0 0 D5 D4 D3 D2 D1 D0]
Midle BYTE[0 1 D11 D10 D9 D8 D7 D6]
High BYTE[1 0 D17 D16 D15 D14 D13 D12]
Als Messwert sollte dann ein 16-18 Bit Integer rauskommen:
[Optional(D17 D16) D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D1 D0]
Das ganze soll auf dem FPGA laufen also nur mit der FPGA Palette an Elementen machbar. Also die 2 hinteren Bits erkennen Byte zwischenspeichern andere 2 Bytes der Wertigkeit nach erkennen zwischenspeichern und am Ende den gesamten Integer zusammensetzen und das ganze in Echtzeit und immer wieder. Ist sowas überhaupt mit der FPGA Palette an Labview Elementen machbar? Wenn ja in welche Richtung sollte ich denn grob vorgehen?
Vielen Dank im Voraus

Beste Grüße und ein frohes Fest Big Grin
Hi KI,

weil Weihnachten kurz bevorsteht, gibt es einen fertigen Lösungsvorschlag:
[attachment=47843]Big Grin
Das sollte auf dem FPGA lauffähig sein, kann's aber hier nicht testen. Es geht ja nur um etwas "Bit-Geschubse"...

Zitat:Also die 2 hinteren Bits erkennen
Ich habe nicht die "hinteren" (heißt für mich: LSB), sondern anhand deines Bitbeispiels die MSB zur Entscheidungsfindung genutzt...
Da will ich doch auch nicht zurückstehen. Allerdings habe ich das FPGA-Modul nicht, ich kann also nur sagen, wie man das mit dem "normalen" Labview machen würde.
Es gibt keine einheitliche Löung für 16 und 18 bit. Eine 16bit-Integer Zahl mit "true" in allen 16 bits hat den Wert "-1". Dieselbe Zahl als 18bit, also 2*"false" und 16*"true", ist hingegen ein große positive Zahl. Man muß dem Programm also vorher sagen, ob die 3 Eingangsbyte als 16 oder 18 bit zu interpretieren sind. (Wenn das Resultat kein Integer sein soll, sondern einfach ein vorzeichenloser Wert, hätte man das Problem nicht)
Hier also je eine Lösung für 16 bit und für 18 bit:
[attachment=47844]
[attachment=47845]
Referenz-URLs