LabVIEWForum.de - HAMEG 8112-3S und LabView

LabVIEWForum.de

Normale Version: HAMEG 8112-3S und LabView
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo zusammen!
Ich habe mein Programm inzwischen "fertig" und wollte heute zum ersten Mal Messwerte aufnehmen.
Erwartet werden zb. Temperaturen in Form "21.56" [°C]. Jedoch kommen immer mal wieder (ca. alle 10 Messwerte) zahlen wie "10000" oder "99999". Ich denke mal, das liegt irgendwie an meiner String Verarbeitung, weiss jedoch nicht wo und wieso.
Könnte dran liegen, dass ich noch offene Fragen habe:

1. Wie muss ich die Flußsteuerung einsetzen? Habe das bisher nicht beachtet. Gibt es daran was zu beachten?

2. Woher weiss ich, auf wieviele Bytes der VISA Read Befehl warten muss? Im Handbuch des Messgerätes steht nichts dazu.

3. Habe ich die TermChars in meiner VI richtig behandelt/gesetzt?

4. Über den String "0161" forder ich vom Messgerät einen Messwert an, da ich den Trigger ausgeschaltet habe. Wenn die Messzeit des Messgerätes 10ms beträgt, sendet er mir dann immer den aktuellsten Wert (wäre von mir gewünscht)?

5. Laut Handbuch muss nach jedem Befehl 35ms gewartet werden, bis der nächste Befehl gesendet werden darf. Muss ich nach Anforderung des Messwertes auch 35ms warten, bis ich den Read Befehl ausführe? Nehme ich an.

6. Laut Handbuch hat das Gerät bei Kanalumschaltung eine "Verzögerung des Messbeginns" von bis 300ms. Darf ich den Messbefehl "0161" dann erst nach den `300ms Verzögerung´ + ´Zeit die zum Messenbenötigt wird´ senden? Wieviel Zeit wird benötigt, damit das Gerät einen Messwert parat hat? Leider steht auch hierzu nichts im Handbuch. Aber vielleicht kennt jemand Zeiten von anderen Geräten. Zitat Handbuch: "Zeit zw. 2 Schaltvorgängen: 20 ms; Verzögerung d. Messbeginns: zw. 50 ms und 300 ms"

Oder findet irgendjemand sonst noch irgendwelche ungereimtheiten im Programm?

Vielen Dank schon mal wieder!!! Was würd ich ohne euch tun...Blush
Hallo Neuling,

kannst du mal erläutern, was das hier bewirken soll:
[attachment=43124]???

1. Brauchst du die? Ist die Flusssteuerung im Handbuch beschrieben?

2. Wenn du ein TermChar hast, brauchst du nur eine "zu hohe" Anzahl von Bytes angeben...

3. Beim SerialInit hast du den Standard gelassen (LF/0x0A), bei der Kommunikation benutzt du dagegen CR/0x0D. Was steht im Handbuch?

4.-6. Was sagt das Handbuch? Wenn es nicht eindeutig ist: Hersteller fragen!

6. "Aber vielleicht kennt jemand Zeiten von anderen Geräten." Wie willst du von "anderen Geräten" auf deines schließen? Vielleicht war deren Hersteller cleverer (oder hat wenigstens ein besseres Handbuch geschrieben...) Big Grin

Zitat:Oder findet irgendjemand sonst noch irgendwelche ungereimtheiten im Programm?
Übermäßiger Gebrauch lokaler Variablen...

Zitat:Jedoch kommen immer mal wieder (ca. alle 10 Messwerte) zahlen wie "10000" oder "99999". Ich denke mal, das liegt irgendwie an meiner String Verarbeitung, weiss jedoch nicht wo und wieso.
Wenn man einen Verdacht hat, sollte man an dieser Stelle mit dem Debugging anfangen...
Hallo GerdW, schön, dass du dich wieder meinen Anfänger Problemen annimmst...

Also zu den Variablen: Das es die Zeit ist, die nach einem Write Befehl abgewartet werden soll, hast du sicher gesehen :-)
Also wird die Frage wohl eher rhetorischer Natur sein...
Ich habe mit den Zeiten rumgespielt und da ich das für "Delay nach Write" nicht nicht 3 mal machen wollte, habe ich die Variable gesetzt.
OK, die andere "Auf MW warten" war überflüssig, stimmt.

1. Zur Flusssteuerung steht im Handbuch: "Schnittstellenparameter RS -232: N, 8, 1, Xon-Xoff (kein Paritätsbit, 8 Datenbits, 1 Stoppbit, Xon-Xoff) Die Datenübertragung erfolgt mit 9600 Baud. USB-Schnittstelle: Das Messgerät muss nicht konfiguriert werden.[...]"
Ist das schon meine Antwort und ich muss es nicht weiter beachten? Weil der PC sieht den Port ja als VCP und nicht als USB Port...?

2. OK, also 20(?).

3. TermChar laut Handbuch: "– Alle Steuerbefehle werden mit CR oder LF abgeschlossen; Der Zeichenvorrat besteht aus den Ziffern 0-9, den Buchstaben A-F und CR, LF."
Also denke ich das beides geht? Aber Einheitlichkeit sehe ich ein und ändere es. Aber wie gebe ich 0x0D als Uint vor?

4.-6. Da werde ich mich wohl an den Hersteller wenden müssen.
Hallo Neuling,

Zitat:Also zu den Variablen: Das es die Zeit ist, die nach einem Write Befehl abgewartet werden soll, hast du sicher gesehen :-)
Also wird die Frage wohl eher rhetorischer Natur sein...
Was der Wert später bewirken soll, ist mir klar. Die Frage war aber nicht rhetorisch gedacht, sondern sollte dich zum Nachdenken anregen...
Nochmal und etwas deutlicher: Was soll es bringen, wenn ich einen Wert aus einem Control lese und diesen Wert in eine lokale Variable des selben Controls schreibe?

Zitat:da ich das für "Delay nach Write" nicht nicht 3 mal machen wollte, habe ich die Variable gesetzt.
LabVIEW hat keine Variablen, sondern nur Datenkopien! Warum nimmst du keinen Draht? THINK DATAFLOW!

Zitat:muss es nicht weiter beachten? Weil der PC sieht den Port ja als VCP und nicht als USB Port...?
- Ob VCP oder "echte" RS232-Schnittstelle ist egal...
- Mit Xon/Xoff hatte ich noch nicht zu tun. Wenn es auch ohne funktioniert, ist es wohl egal...

2.) Wenn deine Antworten immer kürzer sind, dann reichen wohl 20 Bytes...

3.) Man nimmt eine U8-Konstante und schreibt eine 13 rein. Wenn man will, ändert man noch das Radix. Oder man macht einen Rechtsklick auf den entsprechenden Funktionseingang und wählt Erstellen->Konstante...
Seiten: 1 2 3
Referenz-URLs