Moin Moin,
Zitat:jedoch wird die Schleife solange abgearbeitet bis der Status OK für den nächsten Schritt ist!!
ja das ist ok, nur ich möchte ja schon vor beenden dieser Schleife eine andere starten. also geht hier eher nicht.
Zitat:Außerdem verstehe ich eines nicht ganz. Aus dem Sub VI kommt ein 2D Array raus, und machst mit der While ein 3D Array daraus(Grün markiert)?? Ist das absicht?
ja das stimmt, und es soll nicht so sein. Es sollte nur darstellen, dass die Werte in einem Array nach beenden der Schleife eingetragen werden. Im Anhang habe ich das Problem noch einmal anders dargestellt ohne die DaQ vi`s. Dann kann man meine Problematik besser verstehen.
Hier soll also die Messschleife erst gestartet werden, wenn bei "Ausgabe" ein Wert anliegt.
dankende Grüße
H_S
Zitat:Hier soll also die Messschleife erst gestartet werden, wenn bei "Ausgabe" ein Wert anliegt.
Sieht zwar nicht schön aus, vielleicht gibts auch ne schönere Lösung dafür.
Ich hab einfach die Literation der ersten Schleife benutzt um eine Abfrage für die zweite zu erstellen. Erst
wenn die erste Schleife einmal abgearbeitet wurde d.h. wenn i nicht 0 ist (>0 würde auch gehen) startet die zweite Schleife.
Ich hoffe das du das gemeint hast?!
Oder ist es vielleicht so, dass es sein kein das es ein paar Durchläufe dauern kann bis ein Wert größer als 0 bei "Ausgabe" anliegt!
Dann kannst auch die "Ausgabe" Variable dafür nehmen, und diese auf >0 überprüfen!!
Hey,
ja super das funktioniert
Also das klappt schon mal, gut.
Eine Sache dazu wollt ich noch fragen, und zwar möchte ich immer 5s nachdem die Ausgabe durchgeführt wurde einen Messwert aufnehmen. Wie kann ich es genau treffen das genau zu dieser Zeit der Wert in den Tunnel bei der Messschleife und somit abgespeichert wird. Die Schleifen laufen ja unterschiedlich schnell deswegen kann ich ja nicht einfach sagen, dass die Messschleife 5s dauert oder??
schöne Grüße und danke für das kleine Erfolgserlebnis
H_S
Nun stimmt da was nicht!!
Dein Ausgabetakt beträgt 2s!! (Laut VI, vom Anhang)
Immer 5s nach jedem Ausgabetakt soll ein Messwert aufgenommen werden!!
Während ein Messwert aufgenommen wurde, sind bereits 2 ganze Ausgabetakte erfolgt!!!
Zeitlich geht sich das ganze nicht aus!!
Wenn du aber willst, dass der Ausgabetakt insgesamt z.B 3s hat, u. 1s nach Ausgabe eine Aufnahme erfolgt geht das natürlich schon!!
Dann ist das ganze natürlich einfacher!!
Dann benötigst du keine zweite Schleife mehr!!
Hier ein Bsp. dazu:
Wenn man beide Wartezeiten zusammenzählt erhält man die 3s (Mit der Ausführungsdauer, des Code dazwischen, ist ein bisschen über 3s)
1s nach Ausgabe erfolgt die Messwertaufnahme!!
Achja Aufgenommen wir dann auch erst sobald der erste Wert angelegt wurde!
Ps.: Falls ich was falsch verstanden habe einfach Posten!!
Hey,
ja, das prinzip ist schon richtig, ist auch eine gute simple Idee mit deinem Beispiel.
Nur kann man jetzt nicht mehr "sofort" die Schleife und somit die Ausgabe beenden. Die Sequenzen werden ja erst abgearbeitet bis sich was bezüglich der Beendigung der Schleife tut. Das ist sehr wichtig das ich abrupt mit dem Stopp Button alles beenden kann. Hmm oder geht das doch irgendwie?
einen schönen Mittag noch
H_S
Also je nachdem wann der Stoppbefehl kommt wird max. 1 Ausgabe durchgeführt bzw. 1 Messung!!
Viel weniger wäre auch bei der vorherigen Version nicht gegangen.-_-
Das einzige was du noch machen könntest, wäre den Teil mit der Messung in ein Case zu verpacken und ihn auf die Stoppbedingung abzufragen!
Dass heißt wenn in Zeit während er eine Sekunde wartet der Stoppbefehl kommt, wird die Messwertaufnahme nicht mehr durchgeführt!
Somit wird insgesamt max. 1 Aufnahme oder 1 Ausgabe fertiggestellt, und danach sofort beendet.
Schneller Stoppen kann nur mehr der rote Button oben, aber vom Programm selber her wird nicht mehr viel weniger gehen!!
Also zumindestens glaub ich das!!!!
Hey,
im Anhang die Lösung mit dem Case eingebaut, so wie du meintest oder?
Ja also wir sind jetzt schon nah dran, nur das mit dem sofortigen beenden stört mich noch. Also bei Stopp wird trotzdem noch ein neuer Wert ausgegeben. Das muss doch irgendwie noch schneller gehen ..........
nur wie?
Das mit dem -1 nach dem "Array Größe" ist dafür, dass die Schleife nicht nochmal durchläuft nachdem die Größe erreicht wurde oder?
H_S
Fast, so wärs besser den so is 100% gewährleistet die Ausgabe vorher abgearbeitet wird!!
Schneller kann nich einmal ein C Programm stoppen!
Also ehrlich gesagt keine Ahnung wie das schneller gehen sollte!!
Fallst aber einen Weg findest, Bitte Posten!!
Guten Morgen,
so hier hab ich noch ne Lösung angehängt wie man zu jedem Zeitpunkt die Schleife beenden kann.
Das vi ist nochmals erweitert um die Ausgabe jetzt auch Graphisch darzustellen.
Ist das so jetzt zufriedenstellend?
auf Verbesserungsvorschlägen freu ich mich.
H_S
Hey,
mir ist noch eine Sache bei dem letzten vi aufgefallen("änderung mit case mit graph"). Das Stoppen ist ja schon ganz gut nur ist man einmal in die case Struktur von Warten [attachment=48626:Wartezei..._stoppen.vi][attachment=48626:Wartezei..._stoppen.v
]angelangt muss man die Zeit abwarten und dann wird erst beendet. das geht natürlich nicht. Im Anhang ist eine Möglichkeit mit einer Schleife. Nur wie kann ich eine Schleife, die 5s wartet zwischendrin beenden??
bis dann
H_S