LabVIEWForum.de
RS232 auslesen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW FPGA (/Forum-LabVIEW-FPGA)
+---- Thema: RS232 auslesen (/Thread-RS232-auslesen)



RS232 auslesen - fk046 - 03.01.2011 09:51

Frohes neues wünsche ich euch allen.

Ich habe ein Frage bezüglich der Auslesung der RS-232 Schnittstelle.Ich möchte Werte von -8192 bis 8192 am ADC einlesen und an den FPGA senden und an der RS232schnittstelle wieder ausgeben.Mal angenommen es kommt eine Zahl von -5192 an.So muss ich diese Zahl in seinen bit WErte zerlegen(5) und einzelnd über die Schnittstelle schicken oder?Wie kann ich das am besten realsieren?Muss ich beim Vorzeichen etwas beachten?Ich würde mir erstmal die Daten via Trera Term ausgeben lassen und wenn das läuft mir die Daten via Host ausgeben.

Mfg frank


RS232 auslesen - GerdW - 03.01.2011 09:55

Hallo Frank,

wo ist der Link zu deinen vorherigen Threads? Hatte ich dich nicht schon mal auf die Forumsregeln hingewiesen?

- Was ist "Trera Term"?
- "eine Zahl von -5192 an.So muss ich diese Zahl in seinen bit WErte zerlegen(5)" Häh? Was willst du hier?

Schau mal hier rein, da wird auch nach der Umwandlung nach String gefragt... Der einzige Unterschied bei dir ist, dass du mit I16-Werten (statt U8) arbeitest!


RS232 auslesen - Lucki - 03.01.2011 10:30

' schrieb:.Ich möchte Werte von -8192 bis 8192 am ADC einlesen und an den FPGA senden und an der RS232schnittstelle wieder ausgeben
Am ADC kann man aber nur analoge Spannungen, gemessen in Volt, einlesen. Digits kommen allerdings am Ausgang heraus, und da ist die Frage des Zahlenformates durchaus noch unklar. Ist es ein 14bit ADC? Dann wäre der Bereich -8192 .. 8191 und nicht so wie Du es angibst. Am besten du verrätst uns, welche (nicht vorzeichenbehaftete) Bitfolgen am Ausgang bei bestimmten Spanungswerten auftreten.
Ist es so? (2er komplement Format, "I14" - Format)
0 Volt:_________ 00000000000000
0 Volt +1 digit: 00000000000001
0 Volt -1 Digit: 11111111111111


oder so: (Offset-Format, bei ADCs meistens verwendet)
0 Volt:_________ 10000000000000
0 Volt +1 digit: 10000000000001
0 Volt -1 Digit: 01111111111111


Die erste Möglichkeit ist unwahrscheinlich, da es kein genormtes "I14"-Format gibt. Wenn das 2er Komplement hier verwendet werden sollte, dann wird man die 14bit eher linksbündig (d.h. mit 4 multipliziert) in einen I16-Container stecken, dann kann man problemlis mit den Vorzeichen umgehen.


RS232 auslesen - fk046 - 03.01.2011 10:59

Danke für eure schnellen Tips.
Tera Term ist ein Terminal um sich WErte über RS232 aneigen zu lassen.
Der ADC hat 14 bit und einen Bereich von -8192 bis 8191.
Der Bereich des AD-Wanderls beträgt von 0,4-2,9 V.


RS232 auslesen - fk046 - 04.01.2011 12:13

Wie kann ich mir die Bitfolgen anzeigen lassen am ADc Ausgang?
Ich kann mir doch das Vorzeichen doch auch rausrechen lassen oder?
Bsp.:-500 wird verabreitet.Ich addiere +8191.
Somit hätte ich Zahlen zwischen 0 und 16383.
Dieses könnte ich einfach auf dem Host wieder zurückrechnen.
Damit könnte man das Vorzeichenproblem auch recht einfach lösen,oder?


RS232 auslesen - GerdW - 04.01.2011 13:00

Hallo frank,

Zitat:das Vorzeichenproblem
Welches Problem? Du hast eine (Ganz-)Zahl, die weiter übertragen wird...

Zitat:Bitfolgen anzeigen lassen am ADc Ausgang?
Ein ADC hat einen Eingang und eine Schnittstelle zur CPU/zum Bus. Welchen Ausgang meinst du?
Bitfolgen anzeigen lassen: Numerischen Indikator auf Binäranzeige einstellen...

Zitat:Der ADC hat 14 bit und einen Bereich von -8192 bis 8191.
Der Bereich des AD-Wanderls beträgt von 0,4-2,9 V.
Du hast einen (ausschließlich) positiven Eingangsbereich und bekommst trotzdem negative Werte geliefert? Komisches Teil...
Trotzdem:
Umrechnen von Zahlenwert in zu Grunde liegenden Spannungswert: V = (2.9-0.4)/(8191-[-8192])*x.


RS232 auslesen - Lucki - 04.01.2011 13:36

Hier ist ja noch mehr rätselhaft:

Zitat:Ich möchte Werte von -8192 bis 8192 am ADC einlesen und an den FPGA senden und an der RS232schnittstelle wieder ausgeben
D.h. die ADC-Werte gehen in den FPGA rein und werden nach dessen interner SR232-Schnittstelle weitergeleitet. Es ist davon auszugehen, daß der FPGA nur 8, 16, 32... bit -Register hat. Dh. er kann gar nicht anders, als intern die ADC-Werte auf 16bit-Format zu konvertieren uns so an die Schnitttelle auszugeben.

Für die Konvertierung in String und wieder zurück gibt es zwei Möglichkeiten:
[attachment=31486]
Oberes Bild: Direkte Konvertierung von I16 in zweistelligen (hiroglyphischen) String. Nachteil: Zur Datenübertragung lassen sich keine Steuerzeichen, wie z.B 0xA, verwenden, da die Daten selbst alle Werte von ASCII 0..255 enthalten können.
Unteres Bild: Als HEX-String. Nachteil: Man benötige 2 Zeichen pro Byte, d.h. der gesamte String enthält 4 (lesbare) Zeichen . Man kann aber Steuerzeichen bei der Datenüpbertragung verwenden.


RS232 auslesen - Lucki - 04.01.2011 13:42

Hier ist ja noch mehr rätselhaft:

Zitat:Ich möchte Werte von -8192 bis 8192 am ADC einlesen und an den FPGA senden und an der RS232schnittstelle wieder ausgeben
D.h. die ADC-Werte gehen in den FPGA rein und werden nach dessen interner SR232-Schnittstelle weitergleiete. Es ist davon auszugehen, daß der FPGA nur 8, 16, 32... bit -Register hat. Dh. er kann ger nicht anders, als intern die ADC-Werte auf 16bit-Format zu konvertieren uns so an die Schnitttelle auszugeben.

Für die Konvertierung in String und wieder zurück gibt es zwei Möglichkeiten:
[attachment=60625:1.png]
Oberes Bild: Direkte Konvertierung von I16 in zweistelligen (hyroglyphischen) String. Nachteil: Zur Dateinübertragung lassen sich keine Steuerzeichen, wie z.B 0xA, verwenden, da die Daten selbst alle Werte von ASCII 0..255 enthalten können.
Unteres Bild: Als HEX-String. Nachteil: Man benötige 2 Zeichen pro Byte, d.h. der gesmate Strin enthält 4 (lesbare) Zeichen . Man kann aber Steuerzeichen bei der Datenübertragung verwenden.

Solange es keine Probleme mit der Übertragungsgeschwindigkeit gibt, sollte man besser Methode 2 benutzen und an den String ein Zeilenende-Zeichen anhängen.

Man könnte die Datenübertragung sogar als Dezimal-String gestalten. d.h -8192..8193 wird direkt als Dezimal-String gesendet. Man bräuchte dann mit Vorzeichen max. 5 Zeichen, hätte aber den Vorteil, daß die Daten im String direkt lesber sind.