Hallo redhand,
Pseudocode
Zitat:mein Signal kommt aber in einem Array, welches durch die For-Schleife dann autoindiziert wird
Das ist in deinem Beispiel-VI aber anders...
Zitat:Problem: Ist die innere Schleife beendet, startet sie im nächsten Durchlauf wieder bei 0, sprich "x-y" wird immer 0
Jedoch muss auf der anderen Seite die innere Schleife beendet werden, das der nächste Messwert überhaupt kommt
Mögliche Lösungen:
- Messwert schon außerhalb deiner inneren Loop korrigieren...
- andere Vergleichsbedingung nutzen, z.B. ein uninitialisiertes Schieberegister mit einem boolschen Flag
- das Schieberegister an der äußeren Loop andocken...
Ich würde das so lösen, dass die Offsetkorrektur schon im "Gerätetreiber" erledigt wird: es gibt ein VI, welches die Messwerte vom Gerät liest und schon grundlegende Dinge wie Skalierung und Offsetkorrektur vornimmt und dann den "echten" Messwert an die Verarbeitung weiterleitet...
(27.11.2013 09:16 )GerdW schrieb: [ -> ]Das ist in deinem Beispiel-VI aber anders...
An Stelle dessen hab ich die Zufallszahl stehen lassen. Im eigentlichen VI kommt vorher noch ein Teil, der hier aber nicht wichtig ist. Hier nochmal ein Bild
(27.11.2013 09:16 )GerdW schrieb: [ -> ]Ich würde das so lösen, dass die Offsetkorrektur schon im "Gerätetreiber" erledigt wird: es gibt ein VI, welches die Messwerte vom Gerät liest und schon grundlegende Dinge wie Skalierung und Offsetkorrektur vornimmt und dann den "echten" Messwert an die Verarbeitung weiterleitet...
- andere Vergleichsbedingung nutzen, z.B. ein uninitialisiertes Schieberegister mit einem boolschen Flag
Wie heißt das VI und wie erstelle ich ein solches uninitialisiertes Schieberegister?
(27.11.2013 09:16 )GerdW schrieb: [ -> ]- das Schieberegister an der äußeren Loop andocken...
Die Idee hatte ich auch und im Beispiel mit der Zufallszahl funktioniert es auch problemlos.
Komisch ist in meinem eigentlichen VI, wo ich die Funktion benötige, dass es nur manchmal funktioniert. Ich habe noch einen "Testwert" eingesetzt (siehe im VI) bevor das Nullsetzen erfolgt. Meistens ist aber der Testwert dann gleich wie der Ausgabewert (im VI Kanal1).
-anbei das eigentliche komplette VI mit Schieberegister an der äußeren Loop.
Vielen Dank für die Mühe!
redhand
Hallo redhand,
die FOR-Loop im Bild läuft nur genau einmal durch, da kannst du dir die Case-Struktur auch sparen...
(27.11.2013 10:08 )GerdW schrieb: [ -> ]Hallo redhand,
die FOR-Loop im Bild läuft nur genau einmal durch, da kannst du dir die Case-Struktur auch sparen...
Das stimmt natürlich
Wenn ich den Schleifenzählwert auf zb 100000 setze funktioniert es.
Wobei mich ein kleiner Fehler noch irritiert.
Und zwar: Starte ich das Programm zeigt der Wert "Kanal1" den absoluten Wert der Verschiebung an. Verschiebe ich nichts, logischerweise null. Verschiebe ich den Wegaufnehmer zeigt "Kanal1" beispielsweise 100. Stoppe ich jetzt das Programm und starte es wieder wird immernoch 100 angezeigt. Erst nach einigen Neustarts geht es wieder das der erste Wert auch 0 anzeigt.
Woran kann das liegen?
Ich denke das mit dem Schleifenzählwert habe ich in dem Zusammenhang noch nicht ganz verstanden. Was spielt es für meine Werte für eine Rolle ob ich 10000 eingebe oder 500?

Hallo redhand,
Zitat:Wenn ich den Schleifenzählwert auf zb 100000 setze funktioniert es.
AUTOINDEXING RULEZ!
Lass die Konstante ganz weg...
Zitat:Woran kann das liegen?

Check das mal mit Highlight-Debugging/Breakpoints/Sonden!
P.S.: x*488/1000 = x*0.488...
Hallo,
noch eine Frage zum selben VI (anbei nochmal ein aktuelles Bild)
Ich möchte die Werte über "Write to spreadsheet" auslesen und zwar jede halbe Sekunde 1 Wert.
Egal wo ich das VI "Warten" einsetze kommen keine aktuellen Werte mehr bei "Kanal1" (siehe Bild) an.
Bestimmt ist es ein Schleifenproblem, ich versteh nur nicht wo genau :/
Gruß redhand
Hallo redhand,
leider kann man anhand des Bildes nichts beurteilen, da man keinerlei Werte kennt noch die Anzahl der Werte bekannt ist.
Was siehst du beim (Highlight-)Debugging?
(02.12.2013 11:29 )GerdW schrieb: [ -> ]leider kann man anhand des Bildes nichts beurteilen, da man keinerlei Werte kennt noch die Anzahl der Werte bekannt ist.
Was siehst du beim (Highlight-)Debugging?
Anbei mal das gesamte VI.
Ich sehe je nachdem wo das "Warten" VI sitzt einfach wie die 500ms abgewartet werden, dann läuft alles normal weiter.
Die Werte stimmen insofern nicht, das wenn der Wegmesssensor verschoben wird keine aktuellen Werte kommen.
Außerdem kommen dann einfach quer durcheinandergewürfelte Werte.
Hallo redhand,
leider enthält dein VI keine Messwerte, sodass man immer noch nichts debuggen kann.
Wieviele Werte stehen im Array "Wegmesswert"? Wie oft läuft die FOR-Loop durch? Wird Case1 überhaupt ausgeführt?
Was hast du im Highlight-Debugging gesehen und herausbekommen?
(02.12.2013 12:51 )GerdW schrieb: [ -> ]leider enthält dein VI keine Messwerte, sodass man immer noch nichts debuggen kann.
Wieviele Werte stehen im Array "Wegmesswert"? Wie oft läuft die FOR-Loop durch? Wird Case1 überhaupt ausgeführt?
Was hast du im Highlight-Debugging gesehen und herausbekommen?
-Im Array "Wegmesswert" steht 1 Wert
-Die For-Loop läuft so lange wie die While-Schleife
-Ja, Case1 wird ausgeführt und liefert korrekte Werte
Dieses VI ist Teil eines GesamtVIs.
Ich habe das Problem jetzt mit lokalen Variablen gelöst.
Also es funktioniert zumindest mal. Sind lokale Variablen allgemein eine gute Möglichkeit um mit Werten zu hantieren?
Grüße
redhand