LabVIEWForum.de
Kommunikation über RS232 - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Kommunikation über RS232 (/Thread-Kommunikation-ueber-RS232--22039)



Kommunikation über RS232 - narubob - 13.06.2012 08:43

Hallo,
ich habe folgendes Problem:
Ich habe ein RLC-Meter(Hameg HM8118) und muss über Labview das Gerät bedienen können, und das ganze als Projekt darstellen. Ich habe mir überlegt die unterschiedlichen Modi des Gerätes über VISA anzusteuern. Dazu wähle ich im Programm zu erst mein Modi aus und lasse dann über den jeweiligen SCPI-Befehl mir Werte ausgeben und im weiteren Programmverlauf in eine Zahl zerlegen.

Als besondere Anwendung wollte ich nun den Frequenzgang einer Spule(Impedanzen messen bei verschiedenen Frequenzen) anzeigen lassen. Da liegt mein Problem. Ich muss dem Messgerät eine bestimmte Frequenz vorgeben, die IMpedanz messen und speichern, jeweils für verschiedene Frequenzen. Wie man erkennen kann, habe ich versucht über eine For-Schleife die Frequenz jeweils zu übergeben, was aber nicht so funktioniert. Des weiteren habe ich versucht es mit einer Flatsequenz zu machen, in welcher in der ersten Sequenz die normalen Modi sind und in der zweiten die Frequenzvorgabe, was aber dazu führt, dass das Programm bei der Ausführung sehr lange braucht.

Meine Frage ist es nun, wie kann ich am besten mein Frequenzgang umsetzen und vielleicht noch ein paar Tips um mehr übersicht ins Programm zu bekommen bzw das Frontpanel etwas besser zugestalten.


RE: Kommunikation über RS232 - GerdW - 13.06.2012 11:56

Hallo bob,

mal etwas rudimentärer Programmablauf:

Code:
Init RS232
Init Messgerät
FOR-Loop
   Frequenz festlegen
   Impedanz messen
next
De-init Messgerät
Close RS232

Du dagegen hast anscheinend den Dataflow noch nciht verstanden. Du lässt in einer Schleife mehrere Frequenzen berechnen, gibst aber nur den letzten berechneten Wert aus der Schleife aus, und leitest diesen ans Messgerät weiter. So ist das wohl nicht gewollt...

Außerdem:
- Es gibt hier viele Threads zum Thema RS232-Kommunikation. Fast alle kommen ohne BytesAtPort aus, wahrscheinlich auch dein Messgerät (es scheint mit ordentlichen TermChars zu arbeiten). Lies dich schlau!
- Sequenzstrukturen sind sinnlos bei Verwendung des Errorclusters...
- Man kann Strings auch mit Komma als Dezimaltrennzeichen parsen, siehe hier u.a.


RE: Kommunikation über RS232 - narubob - 13.06.2012 11:58

Habe mein Problem selbst gelöst. Eine weitere Frage wäre nun, das man im laufenden Betrieb umschalten kann zwischen den unterschiedlichen Modi und dem Frequenzgang. Im jetzigen Zustand kann ich entweder nur eine Betriebsart auswählen oder den Frequenzgang und muss dann das Programm neustarten.


RE: Kommunikation über RS232 - GerdW - 13.06.2012 12:08

Hallo Bob,

- man muss Arraykonstanten nicht so riesig aufziehen
- man kann schöne Formatierbefehle (statt irgendwas im String zu ersetzen) verwenden, dann muss man auch nicht zwei riesige Konstanten verwenden...
- man kann die Autoindizierung verwenden, statt die Anzahl der Schleifendurchläufe strikt festzulegen...


RE: Kommunikation über RS232 - Clyde - 13.06.2012 12:17

Nur kurz zu seiner Verteidigung, bzw. er ist damit nicht allein: Ohne BytesAtPort bekomm ich die Daten vom Hameg8118 auch nicht sauber ausgelesen. Was nicht heißen soll, dass es keinen besseren Weg gibt.
Wobei: Was ist denn an BytesAtPort auszusetzen? Das VISA-Read-VI erwartet halt eine Anzahl an Bytes, die gelesen werden sollen.