RS232 String auslesen, anzeigen und in Datei schreiben
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!
RS232 String auslesen, anzeigen und in Datei schreiben
Hallo zusammen,
ich hab ziemlich wenig Erfahrung mit LabView und stehe nun vor einem Problem, bei dem ich nicht weiter weiß.
Ich soll aus einem Messgerät verschiedene Daten auslesen. Das Messgerät ist über RS232 angeschlossen.
Das lessen des Strings funktioniert auch. Die Daten werden vom Messgerät kontinuierlich übertragen.
Habe euch mal mein Frontpanel und Blockdiagramm hinzugefügt.
Folgendes sollte mein VI nun können:
- Zyklisches Abfragen der Messwerte (Abfrageintervall frei einstellbar)
- Anzeige der Daten im Frontpanel
- Speichern der Daten inkl. Zeitstempel in txt-file
Ich habe nun das Problem, dass ich nicht weiß wie ich aus dem String die Daten die benötigt warden rausfiltern und in einem numeric indicator anzeigen lassen kann.
Das Messgerät liefert folgende Werte:
Label Units
V mV
VS mV
I mA
CE mAh*
SOC ‰*
TTG Minutes*†
H1 mAh
H2 mAh
H3 mAh
H4
H5
H6 mAh
H7 mV
H8 mV
H9 Seconds
H10
H11
H12
H13
H14
H15 mV
H16 mV
Schonmal vielen Dank für eure Hilfe
Anzeige
17.04.2014, 14:15 (Dieser Beitrag wurde zuletzt bearbeitet: 17.04.2014 14:15 von GerdW.)
RE: RS232 String auslesen, anzeigen und in Datei schreiben
Hallo bohne,
deine Liste mit Rückmeldungen deckt sich nicht unbedingt mit dem, was im FP-Bild zu sehen ist: wie ist der String "FW 212" anhand deiner Liste zu deuten?
Ansonsten:
String auswerten nach Kennung und Wert. Dann anhand der Kennung den entsprechenden Wert in einem (typdefinierten) Cluster ersetzen/neu beschreiben…
P.S.: Bilder sind ja nett, VIs wären schöner. Noch schöner in einer etwas älteren LV-Version wie LV2011…
RE: RS232 String auslesen, anzeigen und in Datei schreiben
Hallo Gerd,
schonmal danke für deine Rückmeldung. Hier noch das VI in einer älteren Version.
Stimmt, die Liste deckt sich nicht mit dem Bild. Das liegt daran, dass die übertragenen Daten je nach Firmware Version unterschiedlich sind. Der String FW212 ist die Firmware-Version des Gerätes.
Vielleicht könntest du mir nochmal genauer erläutern was du mit deinem Lösungsvorschlag meintest. Kann damit leider noch nicht so viel anfangen.
Schonmal danke und Grüße
22.04.2014, 08:12 (Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2014 08:14 von GerdW.)
RE: RS232 String auslesen, anzeigen und in Datei schreiben
Hallo bohne,
so in etwa:
- Du verwendest ein TermChar (zumindest hast du InitSerialPort zu konfiguriert), dann brauchst du keine Wartezeit in der Leseschleife und eine Vorgabe der zu lesenden Zeichen per Konstante reicht auch aus!
- Die gelesene Antwort des Gerätes wird in Kürzel und Wert zerlegt und beides in einem Cluster abgelegt.
- Bei gültigen Antworten wird der Cluster in einem Array of Cluster gespeichert.
-> Auswerten darfst du selbst…
Alternativ legt man sich einen Cluster an, der für jeden interessierenden Wert einen Eintrag beinhaltet (also NumericIndicators für H1...H16, I, V, usw.). Dann wird in diesem Cluster jeweils der entsprechende Wert neu gesetzt. Damit bewegst du dich in Richtung einer FGV…
RE: RS232 String auslesen, anzeigen und in Datei schreiben
Hallo bohne,
Zitat:Könntest du das VI noch hochladen?
Das ist ein Snippet. Erläuterung dazu in der LabVIEW-Hilfe!
Zitat:Wie muss ich vorgehen wenn ich beispielsweise 1x pro Sekunde die Werte auslesen, anzeigen und in einer txt-datei speichen möchte?
Dann musst du einmal pro Sekunde einen Wert in der Datei speichern! (Stichwort: ElapsedTime)
Das mit dem Auslesen und Anzeigen würde ich durchaus öfter erledigen - hier bist du sowieso von der Samplerate deines Geräte abhängig. Wenn es seltener Daten sendet, hast du durchaus mal Werte doppelt gespeichert. Sendet es häufiger Daten, dann ist die Anzeige "flüssiger" und es landen nicht alle Messwerte in der Datei…
RE: RS232 String auslesen, anzeigen und in Datei schreiben
(22.04.2014 10:41 )bohnehouse schrieb: Wie muss ich vorgehen wenn ich beispielsweise 1x pro Sekunde die Werte auslesen, anzeigen und in einer txt-datei speichen möchte?
Wenn das Gerät kontinuierlich sendet, musst Du auf jeden Fall, solange die Schnittstelle geöffnet ist, alles was kommmt auslesen - sonst läuft der Empfangspuffer über. Du muß ja dann nicht jeden gelesenen Wert speichern oder zur Anzeige bringen. Bei dieser Gelegenheit würde ich mir allerdings die Möglichkeit zur Mittelwertbildung anstelle von Dezimierung nicht entgehen lassen. Normalerweise gibt es auch die Möglichkeit, die Datenrate zu konfigurieren, z.B. über ein Kommando, welches zum Gerät gesendet wird. Davon schreibst Du aber nichts. Ehrlich gesagt kenne ich das überhaupt nicht: Ein Gerät, weches über RS232 nur kontinuierlich sendet, aber kein einziges Kommando annimmt.
Edit: Die von Gerd erwähnte Gefahr der doppelten Speicherung gibt es real nicht - was aus dem Empfangspuffer gelesen ist, ist dort raus und kann nicht noch mal gelesen werden. DAQmx Read wartet dann vielmehr (bis zum Timeout) auf neue Daten.
22.04.2014, 12:18 (Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2014 12:19 von GerdW.)
RE: RS232 String auslesen, anzeigen und in Datei schreiben
Hallo Lucki,
Zitat:Ehrlich gesagt kenne ich das überhaupt nicht: Ein Gerät, weches über RS232 nur kontinuierlich sendet, aber kein einziges Kommando annimmt.
Ich kenne solche Geräte: unsere (eher einfachen) Waagen senden ihre Messdaten über RS232, sobald man sie anschaltet! Konfiguration, wenn überhaupt möglich, dann per DIP-Schalter…
RE: RS232 String auslesen, anzeigen und in Datei schreiben
(22.04.2014 12:18 )GerdW schrieb: Ich kenne solche Geräte: unsere (eher einfachen) Waagen senden ihre Messdaten über RS232, sobald man sie anschaltet! Konfiguration, wenn überhaupt möglich, dann per DIP-Schalter…
Danke für die Korrektur. Mein Erfahrungen mit RS232 beziehen sich auch mehr auf die Schnittstelle, und nicht, dass ich eine Vielezahl von entsprechenden Geräten persönlich kenne.
RE: RS232 String auslesen, anzeigen und in Datei schreiben
Zur Info:
Das Gerät ist ein Batteriewächter der ständig die Werte über die RS232 Schnittstelle liefert. Es können keine Einstellungen vorgenommen werden. Das Gerät sendet ständig Daten. Überwacht werden Werte wie Spannung, verbrauchte Ampere-Stunden, Ladezustand usw.
Geplant ist ein Messaufbau, bei dem eine Batterie mit einer elektronischen Last nach einem vorgegebenem Lastprofil belastet wird und die ausgelesenen Daten des Batteriewächtes mitgeloggt werden, in einem VI angezeigt, und in einer Datei ausgegeben werden.