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!
tut mir Leid, dass ich mich erst so spät melde. Ich war in Urlaub und mittlerweile wird der Prüfstand eingesetzt so wie er ist, was jetzt auch nicht weiter schlimm ist, allerdings kann ich zur Zeit keine Änderungen am Programm vornehmen. Aber zu gegebener Zeit komme ich sicher nochmal dazu. Ansonsten macht IchSelbsts Vorschlag durchaus Sinn; der Task den Zähler auszulesen kann auch als erstes abgeschlossen werden noch bevor die AI-Aufnahme durchlaufen ist. Andererseits müsste ich dann im zweiten Durchlauf 6000 Werte bekommen... das wiederum könnte bedeuten, dass ich mit jedem Durchlauf 3000 "alte" Werte bekomme... das wäre nicht gut
Ich muss da wohl doch nochmal ran...
ich melde mich!
04.06.2018, 13:46 (Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2018 20:34 von Lucki.)
(20.04.2018 11:34 )stoa schrieb: .... Die Datenerfassungen sollten doch gleichzeitig starten und eine Sekunde laufen. Werden also nach einer Sekunde die geforderten 1000 AI-Samples abgeholt, sollten doch 3000 (oder auch 3006?) Counterwerte vorhanden sein.
Faal der Thread noch aktuell ist:
Die Datenerfassungen starten gleichzeitig, laufen aber dann nicht eine Sekunde, sondern kontinuirlich und geben ihre Daten in ihre jeweiligen Puffer. Diskontinuierlich erfolgt nur das Lesen der Daten aus den Puffer.n Die beiden DmxRead warten parallel, bis die jeweiligen Bediingungen erfüllt sind.
Bei der Spannung ist das: Bis 1000 oder mehr Werte im Puffer sind, dann werden 1000 Werte gelesen.
Bei der Impulsbreite: Bis mindesens 1 Wert im Puffer ist, dann werden alle Pufferwerte ausgelesen.
Beim ersten Scheifendurchlaus werden praktisch die Impulsbreiten sofort gelesen, (da kann aber noch nicht viel im Puffer sein). Die Schleife wird aber erst nach 1 Sek wiederholt , bis auch die 1000 Spannungswertes isch im Puffer angesammelt haben und aus dem Puffer gelesen sind.
IchSelbst hat das alles schon gesagt, und Du hast das VI entsprechend korrigiert, sagst aber nichts darüber, ob das VI jetzt funktioniert, und wenn nicht, was sich jetzt am Verhalten geändert hat. Da ist es aber dann kaum möglich, neue Ideen mitzuteilen.
Gruß Ludwig
Edit: das Posting von heute hatte ich nicht gelesen, es war auf Seite 2. Deine Spekulation, dass im zweien Duchlauf 6000 Werte gelesen werden müssten, kann ich nicht nachvollziehen. Probierst doch einfach aus.
so langsam werde ich mir der Sache sicher. Manchmal ist mir Papier und Stift einfach am Liebsten und so habe ich mir die Pufferbefüllungs- und -entleerungsvorgänge mal aufgezeichnet. Was haltet ihr davon?
Auf der Y-Achse ist die Anzahl der Daten im Puffer aufgetragen, auf der X-Achse die Zeit.
Wenn die Datenerfassung beginnt, wird sofort nachdem >0 Elemente vorhanden sind der Puffer des Counters ausgelesen (so 0 - 6 Elemente). => Counter 1
Die Spannungsmessung AI wartet, bis 1000 Elemente im Puffer vorhanden sind und liest erst dann. => AI 1
Dies wiederholt sich dann zyklisch. Mit dem Ergebnis, dass nach jedem Schleifendurchlauf zwei Datensätze ausgegeben werden, die nicht zueinander gehören. => Gelb markiert.
Und ja - das mit den 6000 macht dann auch keinen Sinn mehr.
Die Lösung bestünde dann wohl einfach darin, das Auslesen des Counters dem Auslesen der Spannungsmessung nachzuschalten. Wenn es passt, versuche ich das heute auszuprobieren...
Ich verstehe das nicht, hast Du im Urlaub vielleicht zu heiß in der Sonne gelegen? Du hattest die Schleife im VI doch schon geändert, etwas so:
Deine jetzige Beschreibung bezieht sich aber auf das erste VI, und Du hast auch überhaupt noch nichts gesagt, wie sich das verbessserte zweite VI im Unterschied zum ersten verhält. Komisch...
Sehr, sehr heiße Sonne Wie kann man bitte so neben der Spur sein? Tut mir Leid!
Ok, dann sind meine Überlegungen natürlich "von gestern", obwohl ich meine Zeichnung trotzdem mag!
Diese Äußerungen:
Zitat: Tatsächlich zeigt sich das Verhalten, dass in der ersten Ausführung die Ausgabe der Counter leer bleibt und in der zweiten 3000 Werte enthalten sind. Klingt also soweit ganz gut, nur erklärt sich mir damit die erste leere Sekunde nicht. Die Datenerfassungen sollten doch gleichzeitig starten und eine Sekunde laufen. Werden also nach einer Sekunde die geforderten 1000 AI-Samples abgeholt, sollten doch 3000 (oder auch 3006?) Counterwerte vorhanden sein.
bezieht sich aber schon auf das Ergebnis, das ich mit dem VI herausbekommen habe. Nach einer Sekunde sollte ich 3000 Counter- und 1000 Analogwerte haben. Bekomme ich aber nicht. Counter bleibt leer oder mit zwei, drei Werten gefüllt.
Zitat: Wenn ja, dann probierst du folgendes: Mache einmal sequenziert zwischen Start der AIn-Task und While-Schleife ein Zähler-Lesen mit der Anzahl 3. Dann berichtest du, ob alles offensichtlich richtig geht oder ob die Analog-Task einen Fehler bringt.
Was das konkret bringen soll, kann ich mir leider gerade gar nicht erklären, werde es aber bei Gelegenheit ausprobieren!
Zitat: Wenn ja, dann probierst du folgendes: Mache einmal sequenziert zwischen Start der AIn-Task und While-Schleife ein Zähler-Lesen mit der Anzahl 3. Dann berichtest du, ob alles offensichtlich richtig geht oder ob die Analog-Task einen Fehler bringt.
Was das konkret bringen soll, kann ich mir leider gerade gar nicht erklären, werde es aber bei Gelegenheit ausprobieren!
1. Das ist intuitive Fehlersuche. - Ich weiß, Studierende können das nicht, die sind besser im Sourcecode im Netzt suchen ...
2. Steht doch da: "ob die Analog-Task einen Fehler bringt". Bringt sie einen Fehler, bist du offensichtlich irgendetwas Falschem auf der Spur. Bringt sie keinen Fehler, ist das nicht die richtige Spur ...
So einfach ist programmieren ...
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
heute habe ich Zeit gefunden IchSelbsts Intuition zu folgen und habe vor der While-Schleife den Counter ausgelesen. Dies hat jedoch keine Fehlermeldung provoziert. Ansonsten blieb alles wie immer. Außerdem kann ich immer noch nicht nachvollziehen, warum der Analog-Task sich darüber beschweren sollte. Vielleicht erklärt es IchSelbst uns? Anbei das VI dazu.
(28.06.2018 16:23 )stoa schrieb: habe vor der While-Schleife den Counter ausgelesen.
Ist doch schon mal gut. Wenn du dieses neue Lese-VI auch noch in den Error-Cluster eingebunden hättest, wäre es sehr gut geworden.
Zitat:Dies hat jedoch keine Fehlermeldung provoziert.
Was auch zu erwarten war. Hätte es einen Fehler gebracht, würden wir jetzt weiter überlegen. Ansonsten siehe meine Antwort vom 17.06.2018 11:58
Zitat:Ansonsten blieb alles wie immer.
Es tritt also in der While-Schleife folgendes auf:
1. Durchlauf: 1000 Analogwerte. Aber nur 5, maximal 30 Zählerwerte
2. Durchlauf: 1000 Analogwerte. Aber nur ca. 1000 Zählerwerte
3. Durchlauf: 1000 Analogwerte und ab jetzt (ca.) 3000 Zählerwerte.
Hab ich das noch richtig so in Erinnerung?
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).