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!
07.02.2014, 15:28 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2014 15:30 von BunterLoewe.)
1. Im Moment wird in meiner vi Per Queue ein Signal in einer anderen Schleife abgefangen und nachgebildet
--> Zur Veranschaulichung des parallelen Prozesses.
Nun möchte ich als 2. Schritt das erzeugte Signal, bzw. deren Werte in eine Datei schreiben (.txt) und in einer anderen Schleife diese auslesen und abbilden, wie bei 1.
Es spielt hier dabei die Effizienz keine große Rolle, da meine Aufgabe darin besteht mögliche Fehler bei parallelen Prozessen darzustellen, bzw. deren möglichen Einschränkungen, Timing-Probleme usw.
Mein aktuelles Problem lautet, wie aus der .vi zu erkennen ist:
Quelle: Double
Ziel: 1D
Die vertragen sich irgendwie nicht, was kann ich tun?
Mein Ziel ist es,wie erwähnt, vorerst, die Werte auf dem Signal in eine txt schreiben zu lassen.
Später soll daraus dann "parallel" gelesen werden. <-- ob das überhaupt möglich ist, oder nicht muss ich noch gucken.
Anzeige
07.02.2014, 15:32 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2014 15:34 von GerdW.)
erstens solltest du Emails bekommen, wenn neue Antworten auf deine Fragen kommen - und die enthalten einen Link auf deinen Thread. Wenn das nicht der Fall ist, musst du dein Profil bearbeiten…
Zweitens kannst du dir dein Profil anschauen und dort dann "alle Themen" oder "alle Beiträge" suchen: einfach mal auf deinen Nick klicken…
Ich werde euch noch etwas nerven, bis ich alles zusammen habe^^
Bitte deshalb um Verzeihung.
Ich habe hier mal einen Ausschnitt aus meinem vi als kleine vi an gehangen.
Auch wenn es mit seinem jetzigen alleinigen Zustand nicht funktioniert, was auch klar ist, gibt er mir obwohl in der .txt ein Zahl gespeichert ist (z.b 1, oder - 0,6) keine Zahl aus in meinem Anzeigeelement. Ich erinnere mich an eine alte vi von mir, wo das funktioniert hatte. Da waren ein Haufen von Zahlen nacheinander in der txt. Ich weiß nicht ob es hier deswegen nicht geht, weil nur "eine Zahl" vorhanden ist.
Auch die Sonde spuckt nichts aus. Der ließt aus der txt keine Zahl heraus, obwohl dort eine ist.
Was mache ich falsch?
lg
Edit: Habe die Lösung dazu gefunden: Musste von Integer auf Double umstellen..
Nun aber ein neues Problem: Jetzt gibt er mir nur 0 und 1 aus...hmm^^
Edit2: Ne, jetzt klappt's. Lösung war eben das auf Double umzustelle^^
Ich habe das jetzt insofern hinbekommen, dass ich per Queue und per Datei (.txt) Werte zu parallelen Programmen (bei mir sind es Es Schleifen) übergebe.
Das mit der Queue funktioniert gut. Die Werte werden sehr schnell angeglichen, so dass eine gute Parallelität besteht, auch wenn es nicht zu 100% ist.
Das mit dem .txt schaut aber ganz komisch aus: Es werden 2-3 Mal so viel Werte ausgewertet als bei dem mit der Queue wie es scheint. Und ansonsten ist der Graph auch krumm und schief.
Was muss ich ändern, dass die Variante mit der .txt genau so "gut" läuft wie die Variante mit der Queue.
Meine zweite Frage wäre, wie kann ich danach feststellen, wie groß die Zeitverzögerung zwischen dem Original-Signal-Wert und den im Nachhinein parallel erzeugten Signal-Werten ist.
Würde mich um Ratschläge und Tipps sehr freuen.
07.02.2014, 17:14 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2014 17:23 von GerdW.)
für's nächste Mal:
Wenn du das Problem hast, eine Datei zu lesen und nicht das erwartete Resultat zu erhalten, dann solltest du sowohl dein (Beispiel-)VI als auch die Datei (in evtl. gekürzter Form) bereitstellen.
Wie soll man solche Fehler beurteilen, wenn man die Datei nicht kennt?
Tipp:
Mach mal in den LabVIEW-Optionen unter "Blockdiagramm" das Häkchen bei "Frontpanel-Elemente als Symbol darstellen" weg. Du wirst schon noch merken, warum…
Edit zum nächsten Beitrag:
1. Warum muss man als erstes in allen deinen VIs erst einmal die AutoCleanup-Funktion bemühen? Wenn du willst, das sich jemand mit deinen VIs beschäftigt, solltest du auch etwas "Bemühen" zeigen…
2. Warum laufen alle deine Schleifen ungebremst? Wie schnell/oft pro Sekunde willst du auf Dateien zugreifen? Hast du mal deine CPU-Last beobachtet?
3. Deine Schleifen laufen nicht synchronisiert: Das "in die Datei schreiben" und "aus der Datei lesen" müssen nicht zwangsläufig gleich schnell sein…
4. Die Datreizugriffe können sich gegenseitig blockieren: hier wird schließlich auf eine einzelne Resource mit z.T. blockierenden Methoden zugegriffen…
5. Wie ich dir hier schon sagte, ist der Datentransfer über Dateien nicht simpel und auch nur bedingt empfehlenswert!
2.- 4. sind nicht LabVIEW-spezifisch, sondern fallen unter die Kategorie "allgemeines Programmierwissen". Hier solltest du noch etwas lesen…
Tipp:
Wenn du zu einem Chart eine Zahlenanzeige brauchst, dann machst du einen Rechtsklick auf den Chart und wählst "Sichtbare Objekte"->Zahlenanzeige…
1) Das mit dem CleanUp wusste ich bis jetzt noch nicht, gut, sieht alles nun viel aufgeräumter aus.
Hm. Bin noch völliger Anfänger^^
2) Ja, im Moment laufen diese noch ungebremst. Die zwei weiteren Schleifen sollen genau so oft (durch)laufen bzw Werte erzeugen, wie die erste(die, die das Signal erzeugt). Was ich, glaube ich, auch wissen muss, ist, wann genau in der Quellschleife, also nach wievielen ms oder s die txt beschreibt, damit man das in der anderen Txt-Schleife so vom Timing einstellen kann, dass er genau dann (gleichzeitig bzw. wenige ms danach) nach den Werten in der Datei anfragt.
Ich müsste also zunächst wissen wann nach wievielen sekunden die Originalen-Werte eingeschrieben werden.
3) Japp, das ist mir bewusst, aber das soll ich auch laut Aufgabenstellung so provozieren: Eben zu zeigen, wann sich das blockiert, was man tun muss, damit das nicht passiert. Als Problempunkt bei der Queue Variante meinte mir man dass die Queue zu "voll" werden kann, was auch ein Problem sein könnte, was ich aber im Moment nicht so feststellen kann.