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!
ich habe eine Frage an die erfahrenen LV-Benutzer. Für Euch ist dies bestimmt trivial. Für mich jedoch derzeit ein echtes Problem.
Für ein Projekt auf Arbeit habe ich eine Vi erstellt, die mittels ASCII Zeichen mit einem uC kommuniziert und einen Teststand für Flowsensoren ansteuert. (LV 8.5)
Soweit so gut. Mit der Erweiterung der Arbeit auf andere Typen ist das Projekt angewachsen.
Wir das derzeitige Projekt benutzt, dann kommt es vor, dass bei Betätigung einer beliebigen Taste, diese blockiert und die gesamt Vi lahm legt. Ich könnte die Timeout variable der case-schleife anheben, dann jedoch ist die Aktualisierung der Grafik schlechter.
Hat jemand eine Idee, wie ich die Performance verbessern kann. Ich vermute, dass die Verschachtelung das Hauptproblem darstellt. jedoch ist mir noch kein anderer eleganter Weg eingefallen.
Hier die VI.
Vielen Dank für jeden Hinweis. Da ich noch recht unbedarft auf dem Gebiet von LV bin, lerne ich gern was dazu...
NOX
Anzeige
17.02.2012, 08:00 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2012 08:10 von M Nussbaumer.)
(16.02.2012 22:05 )nox schrieb: Hallo an alle LV Benutzer,
ich habe eine Frage an die erfahrenen LV-Benutzer. Für Euch ist dies bestimmt trivial. Für mich jedoch derzeit ein echtes Problem.
Für ein Projekt auf Arbeit habe ich eine Vi erstellt, die mittels ASCII Zeichen mit einem uC kommuniziert und einen Teststand für Flowsensoren ansteuert. (LV 8.5)
Soweit so gut. Mit der Erweiterung der Arbeit auf andere Typen ist das Projekt angewachsen.
Wir das derzeitige Projekt benutzt, dann kommt es vor, dass bei Betätigung einer beliebigen Taste, diese blockiert und die gesamt Vi lahm legt. Ich könnte die Timeout variable der case-schleife anheben, dann jedoch ist die Aktualisierung der Grafik schlechter.
Hat jemand eine Idee, wie ich die Performance verbessern kann. Ich vermute, dass die Verschachtelung das Hauptproblem darstellt. jedoch ist mir noch kein anderer eleganter Weg eingefallen.
Hier die VI.
Vielen Dank für jeden Hinweis. Da ich noch recht unbedarft auf dem Gebiet von LV bin, lerne ich gern was dazu...
NOX
Hallo NOX
Für dich wäre das sogenannte Producer/Consumer-Design Pattern eine Überlegung wert.
Dabei wird die Eventstruktur "nur" dafür verwendet die Events zu erfassen und eine separate Schleife um die Datenabfragen zu machen. Dadurch wird die Eventstruktur nicht unnötig belastet bzw. blockiert.
Ein Beispiel zum Producer/Consumer Pattern findest du unter: File->New...->VI->From Template->Frameworks->Design Patterns->Producer/Consumer Pattern
Hoffe das hilft dir weiter! Falls du Fragen dazu hast darfst du diese natürlich gerne stellen
Gruss Marc
EDIT: Falls es wirklich notwendig ist deine Daten alle 333ms in eine Datei zu schreiben würde ich dir dringenst von den Express-VIs abraten, du kannst dein Programm wesentlich verbessern wenn du manuell eine Datei vor dem deiner While-Schleife öffnest und nach deiner While-Schleife schliesst. Beim Express-VI wird dies, soweit ich darüber informiert bin, bei jedem Durchlauf gemacht und verlangsamt dein Programm unnötig.
Ein anderer Ansatz wäre die Daten erst in die Datei zu schreiben wenn die While-Schleife beendet wird.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: VI hängt sich bei Tastenbenutzung auf
Zwei Dinge:
1. Mach mal folgendes Häkchen raus:
2. Ersetze mal Dein Express-VI und packe es direkt in den Timeout-Case (nur von dort erhältst Du auch Daten).
Wenn das nicht hilft, dann kann man nochmal im Detail danach schauen.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
(16.02.2012 22:05 )nox schrieb: Vielen Dank für jeden Hinweis. Da ich noch recht unbedarft auf dem Gebiet von LV bin, lerne ich gern was dazu...
Noch ein allgemeiner Tipp: Erstelle für alle deine Cluster/Enums (wie etwa FC-Typ 3) einen Typedef! Vorteil daran ist, dass bei einer Änderung am Typedef ALLE Instanzen auf verschiedenen Blockdiagrammen angepasst wird. Du erspartst dir später jede Menge Ärger mit kleinem Aufwand.
Hier eine kurze Anleitung wie man einen Typedef erstellt, vor laaanger Zeit mal erstellt
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: VI hängt sich bei Tastenbenutzung auf
So hat man es auch vor langer Zeit noch gemacht.
EDIT: Für die User neuerer LabVIEW-Versionen: Einfach im Frontpanel einen Rechtsklick auf das Control und "Make Type Def." auswählen.
Gruß Markus
(17.02.2012 08:29 )M Nussbaumer schrieb: Hier eine kurze Anleitung wie man einen Typedef erstellt, vor laaanger Zeit mal erstellt;
Gruss Marc
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Das folgende löst nicht direkt dein Problem, aber trotzdem:
Was ist das für eine Unsitte, das Betätigen eines Buttons im Frontpanel per Event "Mouse Down" abzufragen? Du bist da nicht der einzige, der das in letzter Zeit so gemacht hat.
Einfach den entsprechenden Button auf das Verhalten "Latch When Released" stellen und ein "Value Change" Event des Buttons abfragen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: VI hängt sich bei Tastenbenutzung auf
Bis dahin gibt's dann schon fast LabVIEW 2012.
Holst Du Dir dann wenigstens gleich einen SSP-Vertrag?
Dann kriegst Du immer die neueste Version.
Gruß Markus
(17.02.2012 10:34 )M Nussbaumer schrieb: So muss ich es noch bis Ende März machen, dann wird endlich upgegradet
Gruss Marc
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
17.02.2012, 11:07 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2012 11:12 von GerdW.)
auch ich werde frühestens Ende März upgraden - trotz SSP. Im März kommt nämlich die SP1-Version
(Außerdem erfordert der LV2011-RT-Treiber Updates von cRIO-Targets, was lästig wird, wenn diese nicht im Büro stehen...)
(17.02.2012 11:01 )Y-P schrieb: Bis dahin gibt's dann schon fast LabVIEW 2012.
Holst Du Dir dann wenigstens gleich einen SSP-Vertrag?
Dann kriegst Du immer die neueste Version.
Gruß Markus
(17.02.2012 10:34 )M Nussbaumer schrieb: So muss ich es noch bis Ende März machen, dann wird endlich upgegradet
Gruss Marc
Wir haben nen SSP-Vertrag und die CD von LabVIEW 2011 liegt auch schon ne ganze Weile hier
Problem ist, dass unser ganzes Programm von LabVIEW 2009 auf 2011 umgestellt werden muss mit anschliessenden Funktionstests (jaja das liebe Qualitätsmanagement...), was noch bis März dauert