LabVIEWForum.de - dekadischer Zähler - Wobbelgenerator

LabVIEWForum.de

Normale Version: dekadischer Zähler - Wobbelgenerator
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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.

MfG
Blacky27
Hi, versuche es doch mal hiermit,
hoffe ich habe es richtig verstanden, was du machen wolltest.
Gruß

Jan

LV2009SP1
Hallo Blacky,

nachdem Jan schon die Lösung deiner Hausaufgabe verraten hat, hier noch eine Optimierung:
[attachment=29437]
(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änzenSmile
Immer wieder gerne vergessen/ignoriert... das Ramp Pattern VI

[attachment=29438]

Gruß SeBa
Hallo SeBa,

End=9 für diese Anwendung, sonst gibt's die 1er Werte hinterher doppelt und dazwischen krumme Werte.Smile
Manchmal halte ich einen DLL-Aufruf für einen Vektor [1..9] für übertrieben, außerdem kann der Compiler hier ConstantFolding betreiben...
Hallo Gerd,

Ende ausschließen? = True... weil sonst krumme Werte dazwischen und 1er Werte irgendwie doppelt...


Gruß SeBa
Hallo SeBa,

ahh, arbeite wohl doch zu selten mit dieser Funktion... Bleibt noch das ConstantFoldingSmile
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 habenBig Grin

Gruß SeBa
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

Lv09_img2
Hallo Blacky,

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

Nutze unsere Beispiele und schau dich hier um!
Seiten: 1 2
Referenz-URLs