LabVIEWForum.de
Serielle Schnittstelle reagiert viel zu lahm - 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: Serielle Schnittstelle reagiert viel zu lahm (/Thread-Serielle-Schnittstelle-reagiert-viel-zu-lahm)



Serielle Schnittstelle reagiert viel zu lahm - bmtil - 11.10.2011 10:48

Guten Tag,
nachdem mir hier so ausgezeichnet geholfen wurde beim Auslesen der seriellen Schnittstelle, hab ich das Programm etwas weiter gebaut und bin auf neues Problem gestoßen:
Meine Schnittstelle reagiert viel zu lahm in LabView wenn ich dem LabView sag es soll die LED auf meinem µC'er ausschalten.
Die VI ist sicherlich angehangen.
Im Hyperterminal klappt es alles wunderbar, also liegt es nicht am Quellcode oder dem Controller.
Mein Betreuer vermutet dass es daran liegt dass bevor der Befehl zum Ausschalten kommt, erstmal die Schnittstelle komplett ausgelesen werden muss und erst dann der Schreibbefehl verarbeitet wird.
Bin auch gerade etwas ratlos was ich da tun soll.

Vielen Dank schonmal im voraus.

Grüße,
Mikhail.


RE: Serielle Schnittstelle reagiert viel zu lahm - jg - 11.10.2011 12:10

In die untere While-Schleife gehört eine kleine Wartezeit von mind. 10 ms, sonst läuft die ungebremst und jagt dir die Prozessorlast hoch.

Gruß, Jens


RE: Serielle Schnittstelle reagiert viel zu lahm - bmtil - 11.10.2011 12:15

Hab jetzt die Wartezeit reingebaut, dennoch klappt es nicht.
Anscheinend will LabView nicht gleichzeitig lesen und schreiben, das wäre eine genaure Beschreibung als "LabView reagiert zu lahm", sorry dafür.


RE: Serielle Schnittstelle reagiert viel zu lahm - Lucki - 11.10.2011 14:36

Iwürde
a) in der zweiten Schleife eine Ereignisstruktur statt das Cases verenden.
b) in der ersten Schleife den Eigenschaftsknoten entfernen, der dir nur Informationen, die du vorher schon wußtest, liefert.


RE: Serielle Schnittstelle reagiert viel zu lahm - bmtil - 12.10.2011 06:31

(11.10.2011 14:36 )Lucki schrieb:  Iwürde
a) in der zweiten Schleife eine Ereignisstruktur statt das Cases verenden.
b) in der ersten Schleife den Eigenschaftsknoten entfernen, der dir nur Informationen, die du vorher schon wußtest, liefert.

Morgen.
zu a) hab jetzt versuchgt etwas anderes zu bauen,
und zwar wenn die Kammertemperatur über 40 °C steigt soll die LED ausgehen (simulier ich durch den Offset)
und wenn unter die 40°C dann soll die angehen, die LED steht stellvertetend für das Relais da, welches später die Heizung an und ausschaltet.

Mal ne allgemeine Frage zu den Ereignisstrukturen: Mir ist nicht klar dass dort nach irgendwelchen Zeiten gefragt wird, die LabView Hilfe war mir irgendwie zu kryptisch.

b)den Knoten hab ich jetzt rausgenommen.

Nun jetzt gibt es ein neues Problem mit dem Programm neben dem nicht gleichzeitigen Auslesen und Schreiben.
Und zwar hab ich ja diese "Regelung" gebaut.
Die funtkioniert nur wenn ich für die jeweligen Zuständebeschreibungen auch das Linefeed einfüge (sieht man in den "Strings zusammenfügen" zeichen in dem Case für die Kammer)
dann passiert folgendes:
Die LEd schaltet zwar an und aus bei den entsprechenden Werten,
aber die Referenzwerte werden garnicht mehr aktualisiert!
Es wird genau ein Wert aufgenommen, und dann laüft in dem Graphen für die Referenzwerte nicht einmal die Zeit weiter.
Meine Vermutung ist dass es irgendwas mit dem Linefeed Zeichen aufsich zu tun hat.
Dass das Programm quasi nie mehr in den Referenzcase reinkommt, wobei merkwürdigerweise hat der Highlight Modus was anderes gesagt.

Hier nochmal die VI.


RE: Serielle Schnittstelle reagiert viel zu lahm - bmtil - 12.10.2011 07:15

Entschuldigung für den schnellen Doppelpost, hab aber die Erklärung für das Problem mit der Referenz:
das Lag nicht an dem Zeichenumbruch, sondern daran dass der Befehl "LED an" dauernd gesendet wurde (die Temperatur ist ja im Normalfall immer unter 40°), und der Microcontroller mit den Befehlen zugeschüttet wurde.
Lösung dafür war einfach ein Schieberegister an die While dranzukleistern und dem Programm zusagen dass der Befehl "LED an" eben nur einmal gesendet werden soll.