Liebes Forum, anbei ist ein Projekt. Das ursprünglich chaotische Projekt ist nun übersichtlich programmiert. Leider funktioniert es nicht. Wenn ich es ausführe passiert überhaupt nichts. Auch der Stop-Button geht nicht. Weiß jemand warum?
Hallo jodh,
Zitat:Leider funktioniert es nicht. Wenn ich es ausführe passiert überhaupt nichts. Auch der Stop-Button geht nicht.
Weiß jemand warum?
Die häufigste Fehlerursache heißt "Programmierfehler"!
Von welchem "Stop-Button" redest du? Meinst du "stop (F)" oder "Stopp"? Warum überhaupt 2 Stopp-Buttons? Warum eine While-Loop innerhalb einer While-Loop?
Was heißt "passiert nichts"? Hast du das mittels HighlightExecution-Debugging kontrolliert?
Warum verwendest du immer noch DDT-Drähte in der inneren Loop? Warum hier nicht einfach das Waveform-Array verwenden und IndexArray statt SplitSignal?
Warum haben FP-Elemente in der inneren Loop kein Label?
Brauchst du wirklich dieses "OR false" in der Schleife?
Zitat:Das ursprünglich chaotische Projekt ist nun übersichtlich programmiert.
"Übersichtlich" ist es schon - aber noch etwas "planlos"…
Wie sieht es mit einer richtigen Statemachine aus? Dann bräuchtest du keine "Loop in Loop"-Konstrukte…
Zu deinem ZIP-File: Ich habe mir das "CR-Prozess"-Projekt im Hauptordner angeschaut - aber nicht das ältere "CR-Prozess", das sich in den Unterordnern versteckt…
Kannst du was zu diesem Testaufbau erzählen? Welches Dampfmedium benutzt du, welche Leistungsklasse?
Hallo GerdW, anbei ist ein Screenshot von der Highlight-Funktion. Weiter geht es nicht. Es sind zwei While-Schleifen, weil es einen Button Messwerte berechnen gibt. Nur wenn man den drückt werden die Werte berechnet. Den wollte ich eigentlich drinnen lassen. Es scheinen beide Buttons nicht zu funktionieren, sowohl Messwert berechnen als auch der Stopp-Button.
Das ist ein Miniatur-Dampfkraftwerk mit minimaler Leistung.
Warum verwendest du immer noch DDT-Drähte in der inneren Loop? Warum hier nicht einfach das Waveform-Array verwenden und IndexArray statt SplitSignal?
Warum haben FP-Elemente in der inneren Loop kein Label?
Im ursprünglichen Programm wurde auch SplitSignal verwendet und es hat funktioniert. Das andere was Du da schreibst sagt mir nichts. Ich habe die ursprünglichen
Express-Vis durch Unterprogramm ersetzt.
Hallo,
das subVI läuft noch: hast du mal nachgeschaut, warum es läuft und nicht zum aufrufenden VI zurück kehrt?
(Diesen Vorgang nennt man"Debugging"...)
Bei der Umwandlung des DAQ-Assi in DAQmx-Code kam bestimmt ein Warnhinweis zwecks der Konfiguration des Express-VIs.
Konfiguration des DAQ-Tasks und Start des Task gehören nicht in dein SubVI, sondern außerhalb der inneren oder sogar äußeren While-Loop in dienem Main-VI.
DAQmx-REad gehört als einziges in die innere While-Loop. Task-Beenden, je nachdem...
Think DATAFLOW
Gruß, Jens
Hallo jodh,
Zitat:anbei ist ein Screenshot von der Highlight-Funktion. Weiter geht es nicht.
Weil im subVI eine Schleife ist, die auf die Betätigung eines Stop-Buttons wartet. Der Button ist auf einem Frontpanel, welches der Benutzer (mangels Öffnen desselben) niemals sieht…
Wie schrieb ich etwas früher? Die häufigste Fehlerursache heißt "Programmierfehler"!
Verwende Jens' Vorschläge: ständiges Init/Close eines DAQmx-Tasks ist nicht wirklich sinnvoll…
Zitat:Das andere was Du da schreibst sagt mir nichts.
Dir sagt die Funktion "IndexArray" nichts? Hast du mal die Links in meiner Signatur beachtet?
Zitat:Weil im subVI eine Schleife ist, die auf die Betätigung eines Stop-Buttons wartet. Der Button ist auf einem Frontpanel, welches der Benutzer (mangels Öffnen desselben) niemals sieht…
Das heißt der Stop Button muss da aus dem Sub-Vi raus? Aber in der Schleife muss doch ein Stop sein?
In dem SubVI darf gar keine Schleife sein, du hast du schon in deinem Main-VI, vgl. meinen letzten Beitrag.
Gruß, Jens
okay, jetzt sieht man Werte, ohne diese While Schleife im SubVI. Bei der Drehzahl steht aber leider eine Null, obwohl die Welle sich dreht, was kann da los sein?
Und der StoppButton in der großen Schleife geht nicht
Hallo jodh,
Zitat:okay, jetzt sieht man Werte, ohne diese While Schleife im SubVI. Bei der Drehzahl steht aber leider eine Null, obwohl die Welle sich dreht, was kann da los sein?
Wie sieht's mit Debugging aus?
Du liest Signale als Waveform ein, wandelst diese in DDT, gehst damit in ein weiteres subVI und dort drin wird etwas berechnet und als DDT wieder ausgegeben.
Hasst du diese ganze Signalkette untersucht?
Nochmal: Verzicht auf DDT erhöht die Lesbarkeit von LabVIEW-Code!
Zitat:Und der StoppButton in der großen Schleife geht nicht
Die Antwort liegt in "THINK DATAFLOW!"…