LabVIEWForum.de
Aktueller Wert Schieberegister - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Aktueller Wert Schieberegister (/Thread-Aktueller-Wert-Schieberegister)

Seiten: 1 2


Aktueller Wert Schieberegister - HIMI - 20.09.2011 08:56

Guten Morgen liebe LabVIEW-Freunde,

ich habe ein kleines Problem, welches für euch bestimmt leicht zu lösen ist, mich aber langsam zum verzweifeln bringt.
Ich erhalte über eine serielle Schnittstelle gewisse Informationen, je nach dem welches Steuer signal ich geschickt habe. Ich versuche die empfangenen Daten nun auszuwerten, bzw. den String aufzulösen. Alles funktioniert wunderbar bis auf eines.

Bsp: Ich schicke eine 1 und erhalte vom Gerät Spannungswerte, dann schicke ich eine 2 und erhalte Temperaturwert. Das Gerät schickt alle 500ms einen Datensatz an den PC. Über ein Schieberegister liegen mir die Datensätze in der Form vor in der ich sie auch brauche.

Jetzt zum Problem: Ich schicke die 1 und kann mit meiner Auswerteeinheit die Spannungswerte auslesen. Bin ich damit fertig sende ich die 2 und will die Tempwerte auslesen, lese ich immer ncoh Spanungswerte, da ich immer die am Anfang des Schieberegisters stehenden Daten empfange - is Mist.

Wie ist es möglich ausschließlich den aktuellen Wert des Schieberegisters anzeigen zu lassen?

Danke

HIMI


RE: Aktueller Wert Schieberegister - M Nussbaumer - 20.09.2011 09:00

(20.09.2011 08:56 )HIMI schrieb:  Guten Morgen liebe LabVIEW-Freunde,

ich habe ein kleines Problem, welches für euch bestimmt leicht zu lösen ist, mich aber langsam zum verzweifeln bringt.
Ich erhalte über eine serielle Schnittstelle gewisse Informationen, je nach dem welches Steuer signal ich geschickt habe. Ich versuche die empfangenen Daten nun auszuwerten, bzw. den String aufzulösen. Alles funktioniert wunderbar bis auf eines.

Bsp: Ich schicke eine 1 und erhalte vom Gerät Spannungswerte, dann schicke ich eine 2 und erhalte Temperaturwert. Das Gerät schickt alle 500ms einen Datensatz an den PC. Über ein Schieberegister liegen mir die Datensätze in der Form vor in der ich sie auch brauche.

Jetzt zum Problem: Ich schicke die 1 und kann mit meiner Auswerteeinheit die Spannungswerte auslesen. Bin ich damit fertig sende ich die 2 und will die Tempwerte auslesen, lese ich immer ncoh Spanungswerte, da ich immer die am Anfang des Schieberegisters stehenden Daten empfange - is Mist.

Wie ist es möglich ausschließlich den aktuellen Wert des Schieberegisters anzeigen zu lassen?

Danke

HIMI

Du könntest das Schieberegister nach dem auslesen zurücksetzen (einfach leere Konstante anschliessen), oder brauchst du die Spannungswerte später noch?

Hoffe das hilft dir weiter

Gruss Marc


RE: Aktueller Wert Schieberegister - Lucki - 20.09.2011 09:48

Das Schieberegister ist ja für die "Vergangenheitsbewältigung" da, also um Werte aus vorangegangenen Schleifendurchläufen noch zur Verfügung zu halten. Wenn Du dich immer nur für den aktuellen Wert interessierst, muß man sich doch fragen: warum überhaupt Schieberegister?


RE: Aktueller Wert Schieberegister - HIMI - 20.09.2011 10:02

Danke für deine schnelle Antwort Marc. Die Spannungs- bzw Tempwerte brauche ich dann nicht mehr. Ich benötige immer nur den aktuellen Wert. Das mit dem Rücksetzten des Registers funktioniert nicht so recht. Ich weiß auch, dass es schwer zu erklären ist.

Ich filtere die ankommenden Nachrichten nach einem eineindeutigen Zeichen, welches Ende und Anfang des Frames kennzeichnet.

Was ich nach der Filterung empfange sieht abstrahiert so aus.

^
Temp 1
Temp 2
Temp 3
^



Das Schieberegister macht aus den einzelnen übertagenen Zeilen das oben erkenntlich Muster. Dieser Block (dessen Länge variieren kann), wird übergeben und ausgewertet. Problem ist wie gesagt, dass ich immern nur den ersten Werteblock des Registers auswerten kann.
Es muss doch irgendwie möglich sein den vorangegangenen Werteblock mit dem aktuellen zu überschreiben.

Ich brauche in einem Anzeigepanel später nur die aktuellen Werte 1,2 und 3. Dieser Filter ist auch schon fertig und funktioniert.


RE: Aktueller Wert Schieberegister - GerdW - 20.09.2011 10:09

Hallo HIMI,

ich glaube, es wird Zeit, mal ein VI anzuhängen... (Oder wenigstens ein Bild des BD.)


RE: Aktueller Wert Schieberegister - HIMI - 20.09.2011 10:51

Ich glaube der Gerd hat Recht bzgl. des Bildes.

Ich muss irgendwie den FIFO zum LIFO machen.

Mahlzeit ihr Buben


RE: Aktueller Wert Schieberegister - GerdW - 20.09.2011 10:54

Hallo HIMI,

einfachste Lösung: Lass das uninitialisierte SR einfach weg... (Momentan führt es bei langen Messungen zu Speicherproblemen!)

- Die nur einmal ausgeführte Schleife ist auch unnötig!
- Und dann bitte mal Links-nach-Rechts-Verdrahtung einführen!


RE: Aktueller Wert Schieberegister - HIMI - 20.09.2011 13:34

Ihr habt schon gedacht ihr seid mich los, aber HAHA, hier bin ich wieder.

@Gerd: Deinen Vorschlag hatte ich auch schon mal probiert, aber da tritt mein Problem nur später auf. Ich muss aus dem empfangenen String bestimmte Werte anzeigen je nach dem welches Steuersignal gesendet wurde. Jetzt habe ich wieder das Problem, dass die Werte je nach Ankunft lustig flackern und das soll nicht sein. Ich muss sie also puffern. Demzufolge muss der alte Wert direkt mit dem neuen überschrieben werden. Das hätte ich nun wieder mir einem SR gemacht, aber das habe ich ja schon erfolglos mit dem ganzen Stringblock versucht.

Ich komme mir schon etwas blöd vor, dass ich so ein scheinbar einfaches Problem nicht lösen kann. Hab schon ganz andere Sachen mit LV umgesetzt.


RE: Aktueller Wert Schieberegister - GerdW - 20.09.2011 13:38

Hallo HIMI,

du musst dein SR auch wieder leeren:
Immer wenn eine Meldung komplett erhalten wurde (und ausgewertet ist), musst du sie auch wieder aus dem SR "wegschmeißen...

Anmerkung:
Hast du ein ordentliches Endezeichen bei deiner RS232-Kommunikation? Dann verwende dieses und verzichte auf BytesAtPort...


RE: Aktueller Wert Schieberegister - Lucki - 20.09.2011 13:46

(20.09.2011 13:34 )HIMI schrieb:  Ich komme mir schon etwas blöd vor, dass ich so ein scheinbar einfaches Problem nicht lösen kann. Hab schon ganz andere Sachen mit LV umgesetzt.
Gut so, aber um dieses VI zufriedenstellend zum Laufen zu bringen, müßte man schon verd.. weit von vorn anfangen Big Grin