LabVIEWForum.de
LV und 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: LV und RS232 (/Thread-LV-und-RS232)



LV und RS232 - Xit - 18.09.2017 12:48

Hey LV-Freunde bin ein LV-Neuling und brauche eure Hilfe..
ich möchte über labview ein Frequenzumrichter (Jäger) steuern..hauptsächlich mit einer drehzahlrampe..
die ich dann über Rs232 an den FU weitergebe...
nun habe ich durch rumprobieren und lesen...
eine Rampe programmiert und ein Schnittstellenkonfiguration...leider funktioninert es nicht so wie ich es denke..
kann mir jmd weiter helfen danke Smile)


RE: LV und RS232 - Trinitatis - 18.09.2017 13:01

(18.09.2017 12:48 )Xit schrieb:  kann mir jmd weiter helfen danke Smile)

Hallo,

erstmal solltest du in deinem SS-Konfi-VI einen möglichen Fehler am Ausgang des Visa-Config-VIs auswerten. So weißt du ja garnicht, ob der Port geöffnet werden konnte.
Dann sendest du ohne Wait deinen Schreibpuffer. Das solltest du eventgesteuert tun.
Deine Empfangsroutine überschreibt das Stringelement sofort wieder, selbst wenn du was empfingest. So kannst du da garnichts sehen.

Also baue das mal entsprechend um (ggf. auch mit getrennter Sende-/Empfangsschleife) und sinnvollen Waits drin.

In deinem Rampe-VI sollte auch schonmal eine Eventstruktur ihren Platz finden - dann ist auch das Wait hinfällig.


Gruß, Marko


RE: LV und RS232 - Xit - 18.09.2017 13:54

Vielen Dank für die schnelle Antwort...dann werde ich das jetzt mal fix verbessern Smile)


RE: LV und RS232 - jg - 18.09.2017 15:32

Immer wieder dasselbe Problem mit RS232 und LabVIEW. Stimmt die Einstellung der Schnittstelle wirklich? Du hast die auf aktiviertem TerminationChar = \n gelassen. Wenn das korrekt ist und dein FU wirklich jede Nachricht mit einem <newline> abschließt, dann kannst du dir das "Bytes at Port" sparen. Stattdessen eine genügend große Zahl an den byte count von VISA-Read anschließen, VISA Read gibt dann sofort einen String zurück, wenn es den TerminationCharacter <newline> erkennt.

Weitere Fragen können wir nur nach genauerer Kenntnis des Kommunikationsprotokolls beantworten. Rtmfx

Gruß, Jens

Offtopic2
@Trinitatis: VISA Configure Serial Port öffnet noch nicht den Port, sondern konfiguriert ihn nur.


RE: LV und RS232 - GerdW - 18.09.2017 15:42

Hallo Xit,

Zitat:eine Rampe programmiert ...leider funktioninert es nicht so wie ich es denke..
Erstmal was grundsätzliches: wenn etwas "nicht wie gewünscht funktioniert", dann ist das schlecht. Noch schlechter ist dann allerdings, dass das auch eine ganz dürftige Fehlerbeschreibung ist, mit der man nichts anfangen kann!

Dann zum Rampen-VI:
- Es ist schonmal komisch, wenn du für einen Array-Index einen Float-Wert verwendest. Es wird noch komischer, wenn du diesen Indexwert um 0.01 hochzählen willst! Welches Array-Element willst du denn da einfügen, wenn der Index auf "0.34" steht?
- Wieso muss man Drehzahlen mit 1e-4 multiplizieren? Warum für die Anzeige dann wieder mit 1e4 multiplizieren? Warum eine (Rundinstrument-)Anzeige auf einen Bereich von 0-1e5 einstellen, wenn die dargestellten Werte im Bereich <=10 liegen?
- Warum verwendest du nicht einfach die Rampenfunktion, die es in der Signalerzeugungs-Palette gibt?


RE: LV und RS232 - Xit - 19.09.2017 08:15

Hi Gerd,
wie gesagt ich bin Neuling und weiß oft nicht was ich da mache...
zum Rampen VI..

- also ich habe es über die Rampenfkt in der Signalerzeugungspalette Versuch..jedoch kann der nur konstant eine Rampe fahren bzw. es hat bei mir nicht so funktioniert..
weil ich möchte eine gewisse Zeit angeben können..zb 10sec ist er auf 2000rpm nach 20sec auf 3000rpm und dann 50sec bei 3000rpm const. bleiben usw.
- laut FU entspricht 0V 0 Rpm und 10 V 100000Rpm...deshalb habe ich einmal es in V anzeigen wollen und einmal die Drehzahl..korregiere mich wenn meine gedanken falsch sind.
- ich hatte eig. vor eine tabelle zu programmieren. wo man einfach zeit und drehzahl einträgt und es als diagramm anzeigen lässt und dann rüber zumFU überträgt um mein Motor anzusteuern...
natürlich kann man das alles einfacher leichter und besser machen...deswegen frage ich euch ja Smile)


ich versuche eure vorschläge mal umzusetzen...gern bin ich für weitere vorshcläge offen Smile))
danke schon mal für eure Hilfe...


RE: LV und RS232 - GerdW - 19.09.2017 08:30

Hallo Xit,

Zitat: laut FU entspricht 0V 0 Rpm und 10 V 100000Rpm...deshalb habe ich einmal es in V anzeigen wollen und einmal die Drehzahl..
Das Control heißt bei dir "Drehzahl [rpm]" und enthält Werte zwischen 0 und 10 (rpm!). D.h. dein Analogwert müsste zwischen 0mV und 1mV liegen: ist deine DAQ-Hardware so genau - und kann dein FU überhaupt so genau Spannungswerte entgegennehmen?
Ich bevorzuge es, im Programm nur mit physikalischen Größen (bei dir: Drehzahl) zu arbeiten und nur bei der Eingabe/Ausgabe über die DAQ-Hardware entsprechend zu skalieren. Ich würde dann erst beim Ausgeben des Drehzahlsollwertes an den AO-Kanal den Drehzahlwert in Volt umrechnen…

Zitat:also ich habe es über die Rampenfkt in der Signalerzeugungspalette Versuch..jedoch kann der nur konstant eine Rampe fahren bzw. es hat bei mir nicht so funktioniert.. weil ich möchte eine gewisse Zeit angeben können..zb 10sec ist er auf 2000rpm nach 20sec auf 3000rpm und dann 50sec bei 3000rpm const. bleiben usw.
Niemand sagt, dass das mit nur genau einer einzigen Rampenfunktion erledigt werden muss.
Du brauchst eine Rampe für "0rpm -> 2000 rpm in 10s", dann eine für "2000 -> 3000 in 20s", dann "3000 -> 3000 in 50s". Die Zeit ergibt sich aus Samplerate und Anzahl der Samples…

Wenn man das so schreibt, wird auch schnell klar, dass sich hier eine Schleife anbietet, die diese einzelnen Schritte abarbeitet!

Zitat: ich hatte eig. vor eine tabelle zu programmieren. wo man einfach zeit und drehzahl einträgt und es als diagramm anzeigen lässt und dann rüber zumFU überträgt um mein Motor anzusteuern...
Prima Idee!
(Ersetze das Wort "Tabelle" durch "2D-Array" oder "Array of Cluster of [Start, Ende, Zeit]"…)


RE: LV und RS232 - Lucki - 19.09.2017 11:16

Zur Schnittstellenkonfiguration:
Visa Write scheibt den String in den Schreibpuffer des PC. Das geht blitzschnell. Wenn die Funktion mit dieser Aufgabe fertig ist, können niemals schon irgendwelche Bytes im Empfangspuffer sein, ja, es wurde ja noch nicht einmal etwas gesendet.
Man kann natürlich zwischen Senden und Empfangen ein genügend langes Wait zwischenschalten, aber das ist nicht die beste Lösung. Am besten ist die Steuerung mit Zeilenende-Erkennung, was ja schon so konfiguriert ist. Man braucht dann nichts weiter zu machen, als an den bytezahl-Anschluss ein Zahl, die größer ist als das was zu erwarten ist, anzuschließen:
[attachment=58262]
Zu Deinem Rampen-VI:
Bei mir funktioniert es eigentlich. Wenn Dir das so nicht gefällt, müßtes Du verraten was das ist. Ich habe das VI mal etwas "entrümpelt" bzw. nach eigener Willkür verändert.
[attachment=58263]


RE: LV und RS232 - Xit - 19.09.2017 14:47

Vielen Dank euch allen...Ihr habt mir echt weiter geholfen..

Ps: dieses Forum ist super..weiter so Big GrinBig Grin