Hey ho.
Ich bins nochmal mit dem selben Problem von gestern.
Ich bin ziemlich frustriert und das Ein- und Ausschalten des PCs langsam leid.
Ich habe 10 analoge Kanäle und 7 digitale Kanäle. Die möchte ich in einer Sequenzstruktur auslesen und anschließend abspeichern. Nun hängt sich aber das Programm nach der Aufnahme von je 5 Messwerten auf, also nach 5 Schleifendurchläufen.
Ich weiß nur nicht warum. Liegt es vielleicht an nem vollen Speicher? Warum will LabVIEW nicht mehr als 5 Schleifen durchlaufen?
Bitte Biite helft mir. Ich weiß nicht, wo das Problem liegt und hier auf Arbeit kennt sich niemand mit LabVIEW aus...
:???:
Hallo..
ich habe mir das einmal kurz angeschaut.. was mir aufgefallen ist..
- du schreibst in ein file.. aber schliesst es nicht
- was machst du denn mit diesen Stoppuhren? Der Wert ist doch immer null beim initialisieren und somit wird die Schleife beendet?
gruss
Hallole,
öhm...jo.
* Warum startest und beendest Du deine Tasks / Kanäle immer wieder?
* Warum verwendest Du überhaupt eine Sequenz? Willst Du die Daten nicht gleichzeitig haben?
* Warum frägst Du Deine digital INs einzeln ab und nicht über Portline alle zusammen?
* Wie dottore schon meinte, was machst Du mit diesen Zeitelementen und Whileschleifen?
Bei mir läuft Dein Programm bis auf die Fehlermeldung "Fehlendes Gerät" eigentlich durch. Was natürlich sein kann: Deine Hauptwhileschleife ist nicht verzögert. Vielleicht will deshalb Dein Rechner wegen zu hoher Auslastung nimmer. Hast Du schon mal über den taskmanager (Windows) Deine Prozessorlast angeschaut?
Die Datei zu schließen ist zwar notwendig, aber auch erst nach Beenden des Programms.
Und räum doch mal ein bissle auf, so mit Sub-VIs und so
.
Schau Dir mal die Programmierung in dem VI anbei an. Das ist zwar nicht von mir (weil immer noch die Frage offen ist, ob das nun dopelt gemoppelt ist Kanäle einmal im MAX und nochmal im VI anzulegen), aber es beschreibt in etwa das, was ich eingangs als Frage gestellt habe, nur eben einmal Kanal erstellen und nach Programmende schließen. Ein Testfile mit Messdaten lade ich auch hoch wo man erkennt, dass Dein Programm prinzipiel funktionieren müsste.
Grüße
LabVIEW 8.6
Vielen Dank für eure Anmerkungen.
Ich hab vor 1,5 Monaten das erste Mal LabVIEW programmiert, deswegen kenne ich mich mit "State Machine" nicht aus und verwende die Sequenzstrukturen. Ich bin ja schon stolz auf mich, dass ich das hingekriegt habe
Eigentlich will ich alle ja gleichzeitig laufen lassen, aber ich hab Angst, dass das Programm das nicht schafft.
Die digitalen Ports muss ich wohl nacheinander auslesen, da sonst nicht alle Impulse gezählt werden. Einen Counter kann ich nicht verwenden, da es zu viele Sensoren sind und ich nur 2 Countereingänge habe.
Die Uhr stoppt die Schleife. Das heißt, es wird jede ms abgetastet, und das 500 ms lang.
Ich freu mich aber schon mal, dass es bei euch prinzipiell funktioniert.
Vielen Dank, dass ihr es euch angesehen habt.
Wenn ihr mir noch Tipps geben könntet, wie ich alles parallel auslese, ohne dass das Programm kollabiert, wär ich euch sehr dankbar.
Liebe Grüße
Marie
Ich weiß, das klingt jetzt frech, aber kann jemand ein paar Sensorender meines VIs von der Sequenz zu einer Statemachine umbauen? Ich hab mir zwar schon tausende Beispiele angeguckt zu diesem Thema, aber irgendwie blick ich es nich, wie das Auslesen und simultane Darstellen damit funktionieren soll.
Es wäre schön, wenn ich ein Beispiel hätte, an dem ich es nachvollziehen kann.Ich hoffe, dass ich irgendwann durch die Logik einer Satemachine durchsteige.
Dankeschön, Marie
Hallo Marie.
Ich kann und werde zwar deinem (frechen?
) Wunsch nicht direkt nachkommen, da mir zum Einen die Zeit fehlt und ich zum Anderen denke, dass man in dem Fall (fast) dein ganzes Programm neu schreiben müsste.
Ich habe dir statt dessen mal eine Datei beigefügt, die ich mir einmal erstellt habe als ich zum ersten Mal mit DAQmx und paralleler Darstellung zusammengetroffen bin. Damals habe ich einfach mit einem USB 6009 herumexperimentiert, an dem ich ein Rechtecksignal an einem DI angelegt hatte.
Prinzipiell ist es von hier kein grosser Schritt zum gleichzeitigen Einlesen und Darstellen von mehreren Eingängen und wenn ich diese Woche noch Zeit finde und es dich interessiert, dann kann ich das VI für dich noch erweitern.
Aber ich denke, die Funktionsweise einer Statemachine wird auch schon bei diesem Beispiel klar.
Ach ja, wenn du nach jedem Lesen erst Darstellen und dann wieder Lesen willst, dann kannst du der Zustandsmaschine noch einen weiteren Fall hinzufügen "display samples" und hier den Inhalt des "No Error"-Frames einfügen. Dann musst du nach "read samples" "display samples" aufrufen und umgekehrt und schon kannst du auf die Queue veryichten und hast alles in einer Schleife, wobei die Darstellung dann nicht mehr simultan sondern sequentiell erfolgt.
[
attachment=24338]
Ich hoffe, dass hilft dir zumindest im Verständnis von State Machine und paralleler Ausführung/Synchronisation von Schleifen weiter.
Grüße aus Schweden,
Tobias
' schrieb:dass man in dem Fall (fast) dein ganzes Programm neu schreiben müsste.
Das denke ich auch.
Irgendwann hab ich mal ein Muster gemacht für ein eigenständiges SubVI, das das komplette Datensampling abarbeitet, von Create über Daten lesen bis Close. Guckst du
hier