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!
Hallo,
ich bin neu hier im Forum und bin mir nicht sicher ob meine Frage hier richtig ist.
An der Schule arbeiten wir seit einem halben Jahr mit LabView und sind gerade dabei einen Wobbelgenerator zu programmieren.
Für Profis wahrscheinlich "nicht der Rede Wert", für uns ist das alles Neuland.
Er soll von einer Startfrequenz (0,1Hz, bzw. 1Hz) bis 1, bzw. 10 Zählen, anschließend in 1er Schritten bis 10, bzw. 10er Schritten bis 100 und so weiter, bis er 1000 erreicht hat.
Also ein dekadischer Zähler.
Ist sicherlich keine große Aufgabe, aber ohne großartige Kenntnisse in LabView doch etwas schwieriger.
Unser Dozent hat uns folgenden Tipp gegeben: Innerhalb einer WHILE-Schleife muss sich eine FOR-Schleife befinden.
Mmmmhhhhh..... Na toll!!!
Ich bin mittlerweile soweit, dass ich die Frequenz in der FOR-Schleife 10 Schritte zählen kann. Von 0,1 bis 1 und von 1 bis 10.
Nun müsste ich aber von 1 bis 10 in 1er Schritten weiterzählen, bzw. von 10 bis 100 in 10er Schritten. Da kommt jetzt mein Problem.
Wie schaffe ich es, dass sich die "Zählschritte" um eine Dekade erhöhen?
Wäre schön, wenn mir jemand helfen könnte. Wenn möglich in "einfachen" Schritten.
nachdem Jan schon die Lösung deiner Hausaufgabe verraten hat, hier noch eine Optimierung:
(Das gleiche Prinzip bietet sich an, wenn man Stützpunkte für logarithmische Darstellungen braucht, hier nehme ich gern die Werte 1,2,3,5,7 pro Dekade...)
@Jan:
Konstante Operationen <strike>immer</strike> nach Möglichkeit außerhalb von Schleifen durchführen. Bei den hier zu erwartenden Datenmengen tut's auch AutoIndexing (statt vorher eine Array zu initialisieren und Werte zu ersetzen.) Außerdem könntest du dein Profil mit LV2009 ergänzen
Immer wieder gerne vergessen/ignoriert... das Ramp Pattern VI
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
16.09.2010, 09:10 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2010 09:12 von GerdW.)
End=9 für diese Anwendung, sonst gibt's die 1er Werte hinterher doppelt und dazwischen krumme Werte.
Manchmal halte ich einen DLL-Aufruf für einen Vektor [1..9] für übertrieben, außerdem kann der Compiler hier ConstantFolding betreiben...
Ende ausschließen? = True... weil sonst krumme Werte dazwischen und 1er Werte irgendwie doppelt...
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Ja... keine Ahnung. Kann der Compiler nicht auch raten (hehe) was aus dem DLL Aufruf rauskommt? Bevor wir das jetzt vertiefen, lass mich einfach sagen... ich wollte das Ramp Pattern nur mal erwähnt haben
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
16.09.2010, 17:58 (Dieser Beitrag wurde zuletzt bearbeitet: 21.09.2010 19:16 von jg.)
Danke für die vielen Tipps und Hilfen!!!
Aber..... von diesem Wissen sind wir noch seeeehr weit entfernt.
Wir bewegen uns noch in den Kinderschuhen.
Ich habe meine Datei im Anhang beigefügt.
Beim Starten ist die Startfrequenz=1, die Zielfreqenz=1000, momentane Frequenz=0
Mit Zähler und Faktor habe ich nur experimentiert.
Nochmal zum Ablauf. Ich habe das bestimmt zu kompliziert erklärt.
Startfrequenz=1 --> in 1er Schritten bis 10 zählen --> in 10er Schritten bis 100 zählen --> in 100er Schritten bis 1000 zählen
Startfrequenz=0,1 --> in 0,1er Schritten bis 1 zählen --> in 1er Schritten bis 10 zählen --> in 10er Schritten bis 100 zählen --> in 100er Schritten bis 1000 zählen
Jetzt ist es vielleicht etwas deutlicher geworden.
Also ganz einfach und easy.... wenn man es kann.
MfG
Blacky27
16.09.2010, 21:29 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2010 21:32 von GerdW.)
dein VI vereint so ziemlich alle Anfängerfehler, die man machen kann:
- lokale Variablen benutzen, obwohl die Terminals ungenutzt bleiben (LabVIEW ist eine auf Datenfluss basierende Sprache, man benötigt keine Variablen!)
- keine Shiftregister genutzt
- Datenfluss missachten
- RaceConditions (durch lokale Variablen) erzeugen
- unpassende Datentypen (bei der Wait-Funktion), da Konstanten nicht per Rechtsklick erzeugt wurden
- die Aufräumfunktion von LV2009 nicht benutzt