INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Wie einzelne Bits in einem Word verschieben?



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

26.08.2010, 13:22
Beitrag #1

RCMechatronic Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Aug 2010

LV 2009 Studentenversion
2010
de


Deutschland
Wie einzelne Bits in einem Word verschieben?
Hallo liebe Community, bzw. Experten in Lab-View,

ich benötige dringend eure Hilfe, nach langer Suche über Google und in Foren bin ich immer noch nicht fündig geworden und hoffe hier kann man mir helfen.

Ich fange mal an,... Ich lese mit LabView 2009 über die VISA Funktion ein RS232 Gerät aus und erhalte als Antwort zwei WORDS.

Um diese WORDS in eine physikalische Größe umwandeln zu können müßte ich ein Teil der Bits um eine Stelle nach rechts verschieben.

Ich hatte mich schon mit den Operatoren bitshift, rotation usw. beschäftigt. Bisher gelang es mir aber nicht nur einen gewissen Teil der Bits zu verschieben.

Im Anhang ist ein Bild vom Muster der Antwortstrings vom Gerät

Das Bit Nr. 7 bleibt immer 0 im Antwortstring.
Allerding muss ich zur Umrechnnung in eine physikalische Größe das Bit Nr. 8 im WORD 0 um eine Stelle nach rechts schieben, so daß AF7 bis AF0 ohne Lücke in Dez umgerechnet werden können.

Im Word 1 muss ich Bit Nr. 13 bis Bit Nr. 8 um eine Stelle nach rechts schieben, damit L12 bis L0 ebenfalls keine Lücken mehr hat.


Kurz gesagt das Bit Nr. 7 ist in der Antwort immer Null muss aber zur Umrechnung eleminiert werden.

Handelt es sich hier um eine Art von bitshift für einzelne Bits?

Und wenn ja wie funktioniert das in LabView, bisher konnte ich leider nur alle Bits im Word um eine Stelle verschieben, was aber keinen Sinn macht.

Ich verstehe sowieso nicht warum das Bit Nr. 7 immer Null bleibt aber man zur Umrechnnung eine Stelle aufrücken muss.


Wäre jemand so freundlich und würde mir weiterhelfen? Welche Funktion in LV kann man nutzen um das Problem zu umgehen.

Vielen Dank.


MfG
Dennis


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.08.2010, 14:03
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Wie einzelne Bits in einem Word verschieben?
Wenn ich richtig verstanden habe, dann so z.B.
   
Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.08.2010, 14:45
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Wie einzelne Bits in einem Word verschieben?
Jens war schneller, hier der Varinantenvielfalt wegen noch meine Version:
   
Lv09_img2
Sonstige .vi  Bitmanip.vi (Größe: 8,37 KB / Downloads: 448)

Aus RS232 wird original ein String empfangen. Wenn Du diesen String beschreibst und sagst, was mit den 3 Daten gemacht werden soll (soll das eine Gleitkommazahl werden?), dann läßt sich alles noch eleganter machen.
Zitat:Ich verstehe sowieso nicht warum das Bit Nr. 7 immer Null bleibt
Vieleicht ist RS232 hier auf 7 Bit konfiguriert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.08.2010, 15:15 (Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2010 15:16 von Falk.)
Beitrag #4

Falk Offline
ja, das bin ich...
***


Beiträge: 343
Registriert seit: Jan 2006

8.0 :: 201x ::202x
2006
DE_EN


Deutschland
Wie einzelne Bits in einem Word verschieben?
Moin!

Ich würde beide Zahlen einfach in einen Boolean-Array umwandeln und dann per Indizes die notwendigen Bits tauschen. Oder liege ich da gerade komplett daneben?

Schöne Grüße
Falk


Angehängte Datei(en) Thumbnail(s)
   

Currently: zzzZZZZZZZZ
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.08.2010, 19:40
Beitrag #5

RCMechatronic Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Aug 2010

LV 2009 Studentenversion
2010
de


Deutschland
Wie einzelne Bits in einem Word verschieben?
Erstmal möchte ich mich bei euch für die Antworten und Hilfe bedanken.

Bildchen und VIs helfen mir persönlich auch mehr als reiner Text, da ich noch ein Frischling in LabView bin, thanks :-)

@Lucki

Ja es soll eine Gleitkommazahl werden, genauer gesagt auf drei Stellen nach dem Komma.

Ich erwarte Werte zwischen 0,800 und 5,000 (Lambdaverhältnis)

Nachher werde ich eure verschiedenen Varianten ausprobieren und über mein Erfolg oder Misserfolg berichten.

Zusätlich kämpfe ich noch mit einem 2. Problem. Mein VI wird extrem langsam wenn ich die RS232 Schnittstelle öffne, dass sehe ich an meinem Chart vom PID-Regler, die Samplerate beträgt normalerweise 50ms und mit RS232 ca. 3 mal länger. Ich muss mal im Forum suchen oder ggf. ein neuen Thread aufmachen.


Ich bedanke mich nochmal ganz freundlich bei euch

Gruß
Dennis
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
29.08.2010, 12:00 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2010 12:10 von RCMechatronic.)
Beitrag #6

RCMechatronic Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Aug 2010

LV 2009 Studentenversion
2010
de


Deutschland
Wie einzelne Bits in einem Word verschieben?
Hallo, also mein VI funktioniert jetzt so wie ich es will. Ich hatte mich jetzt für Luckis Variante entschieden.

Allerdings ist meine Variante nicht die eleganteste und vielleicht auch nicht optimiert auf Leistung.

Kann jemand nochmal ein Blick auf mein VI werfen und ggf. was verbessern?

Besonders die rechte obere Ecke im Blockdiagramm gefällt mir nicht so, da gibt es doch bestimmt eine elegantere Version mit Arrays/Clusters ?

Meint Ihr ich verschwende Prozessorleistung mit dem aktuellen VI ? Vielleicht kann man auch dort noch etwas optimieren.

Um die Hilfe zu vereinfachen lade ich einfach mal das VI hoch.

Für Tipps und veränderungen wäre ich sehr dankbar.

Gruß
Dennis



LabView-Version vom Anhang: LV 2009 SP1
Lv09_img2


Angehängte Datei(en)
Sonstige .vi  Lambda.vi (Größe: 27,02 KB / Downloads: 285)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
29.08.2010, 13:13 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2010 13:13 von Lucki.)
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Wie einzelne Bits in einem Word verschieben?
Hast Recht, oben rechts läßt sich etwas vereinfachen. Und unten rechts vielleicht auch, aber da weiß ich nicht, wie die Umrechnung sein soll.
Und dann würde ich nicht mehr als eine Bildschirmseite Raum verschwenden für das bisschen Code. Und ob alle 50ms neue Kommandos gesendet werden müssen, das mußt Du selbst wissen. Wenn es nur darum geht, daß die Anzeigen für den Betrachter immer aktuell sind, dann würden 100..200 ms auch genügen.

Lv09_img2
Sonstige .vi  Lambda1.vi (Größe: 25,83 KB / Downloads: 474)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.08.2010, 12:31
Beitrag #8

RCMechatronic Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Aug 2010

LV 2009 Studentenversion
2010
de


Deutschland
Wie einzelne Bits in einem Word verschieben?
Danke Lucki, deine Veränderung ist für mich auch einleuchtend,... nur komme ich meistens nicht selber drauf von Anfang an.

Die einzulesenen Bytes hast du auf 20 erhöht, soll das eine Sicherheit zwecks Timings sein?

P.S. Die obere Visa-Funktion liest eigentlich permament die Bytes ein thoeretisch ohne Abfrage-String (finde ich nicht so leistungsoptimiert)
und die untere Visa Funktion antwortet nur nach einem Abfrage-String (polling Betrieb).



Gruß
Dennis
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.08.2010, 13:05 (Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2010 08:40 von Lucki.)
Beitrag #9

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Wie einzelne Bits in einem Word verschieben?
' schrieb:P.S. Die obere Visa-Funktion liest eigentlich permament die Bytes ein thoeretisch ohne Abfrage-String (finde ich nicht so leistungsoptimiert)
und die untere Visa Funktion antwortet nur nach einem Abfrage-String (polling Betrieb).
Wenn das so ist, dann würde ich die Abfrage voneiander unabhängig machen, damit nicht ein Buffer überläuft.
Eine andere Möglichkeit wöre, die eine Schleife zu lassen, dann aber das Wait herauszunehmen. Die untere Funktion würde dann genau so oft gepollt, wie die obere die Daten sendet, und das würde funtkionieren.
Es war übrigens ein Hauptfehler, die Schnittstelle immer wieder neu zu konfigurieren. Siehe das neue VI.

Die Erhöhung auf 20 Bytes ist von mit nur so ein Gefühlssache. Der Buffer wird ausgelesen, wenn TermChar eintrifft. Wenn die Stringlänge immer konstant 9 beträgt, dann muß an den Byteanschluß eine Länge von 9...beliebig groß angeschlossen werden.
Lv09_img2
Sonstige .vi  Lambda2.vi (Größe: 27,58 KB / Downloads: 292)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.08.2010, 18:06
Beitrag #10

RCMechatronic Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Aug 2010

LV 2009 Studentenversion
2010
de


Deutschland
Wie einzelne Bits in einem Word verschieben?
Super Lucki,

so wird die RS232-Schnittstelle nicht alle 50ms neu initalisiert, was wahrscheinlich auch Rechnerleistung gekostet hatte.

Die untere Funktion lief bisher problemlos,
aber bei der oberen Funktion kann ich leider kein Polling machen, weil mein Controller schickte auch ohne "Anfrage-Strings" Bytes ohne Ende.
Obwohl ich nur 6 benötige, von daher musste ich gezielt mit der Funktion "String nach Muster durchsuchen" meine 6 Bytes herausfischen.

Besser hätte mir natürlich gefallen, dass mein Controller nur die gewollten 6 Bytes schickt auf Anfrage, jedoch lässt sich der Controller nicht umprogrammieren weil es ein Serienteil ist.

Ich füge dann dein VI in meinem Hauptprogramm ein und schaue ob ich damit weniger Rechnerauslastung habe, damit mein Chart (PID Regler) auch tatsächlich alle 50 ms aktualisiert wird.


Vielen Dank nochmal

Gruß
Dennis
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Fehler bei Konvertierung von Word zu PDF TDO88 12 5.621 04.07.2023 12:25
Letzter Beitrag: TDO88
  Datei über Drag & Drop in andere Anwendung (kein LabVIEW) verschieben ahebauer 2 3.647 29.03.2017 08:41
Letzter Beitrag: ahebauer
  Bits eines Binärcodes verdoppeln Praktikantin 18 10.240 07.08.2015 07:24
Letzter Beitrag: GerdW
  Elemente auf Frontpanel zur Laufzeit verschieben andrepf 37 22.812 18.11.2014 17:11
Letzter Beitrag: andrepf
  Rechteck via Taster verschieben LabViewUser2014 21 16.383 10.04.2014 10:40
Letzter Beitrag: LabViewUser2014
  Listbox-Elemente verschieben in LV8.0-EXE Trinitatis 7 6.130 17.09.2013 13:55
Letzter Beitrag: Trinitatis

Gehe zu: