LabVIEWForum.de - Compass

LabVIEWForum.de

Normale Version: Compass
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo Jenni,

deine letzten Beiträge enthalten leider nicht mehr den aktuellen Stand deines VIs…
Hallo Gerd,

danke für die Antwort.
Ich hänge mein derzeitiges VI mal an diese Nachricht an Smile
Hallo Jenni,

spendiere deiner Statemachine einfach mehr States:
- "Messung starten" gehört in einen eigenen State, wo einfach nur auf den entsprechenden Button gewartet wird
- "Positionsbewegung": nimm die Whileloop dort raus und ersetze das "i" der Schleife durch ein Schieberegister der Statemachine, welches du selbst hochzählst

Mit den zwei kleinen Änderungen kann deine Statemachine jeden Arbeitspunkt sauber abarbeiten und du hast immer die Möglichkeit, deine Graphen/Anzeigen zu aktualisieren…
Wieder einmal Danke für deine hilfreiche Antwort Gerd! Smile
Ich werde deine Vorschläge direkt mal umsetzen.

Ganz liebe Grüße,
Jenni
Hallo Gerd,

deine erste Verbesserung habe ich erfolgreich eingebaut Smile

Ich habe aber noch eine kurze Frage zu deiner zweiten Anmerkung.

Zitat:"Positionsbewegung": nimm die Whileloop dort raus und ersetze das "i" der Schleife durch ein Schieberegister der Statemachine, welches du selbst hochzählst

Wenn ich das "i" durch ein Schieberegister der Statemachine ersetze, dann ist damit doch gemeint, dass ich den Zustand selber bestimmen kann, oder?
Allerdings will ich ja eine kontinuierliche Positionsbewegung erreichen.
Also nicht der State soll "hochgezählt" werden, sondern der Befehl der abosluten Positionierung.
Ich weiß gerade nicht genau, wie ich das umsetzen kann.

Liebe Grüße,
Jenni
Hallo Jenni,

Zitat:Also nicht der State soll "hochgezählt" werden, sondern der Befehl der abosluten Positionierung.
Die einzige "Variable" innerhalb dieser WhileLoop ist der Schleifenzähler "i".
Wenn du also den Inhalt dieser Loop als eigenen State definierst, musst du nur "von außen" diesen Zähler als Parameter hineingeben.
Deshalb: das "i" durch ein (zusätzliches) Schieberegister der Statemachine ersetzen und selbst hochzählen.
[attachment=57036]

Dein STOP-Button entscheidet dann, ab dieser State erneut aufgerufen wird (mit einem um 1 erhöhten "i"-Zähler) oder ob ein den State "Postionsabfrage" gewechselt wird…
Hallo Gerd,

ich habe da noch eine Frage:
Zitat:Dein STOP-Button entscheidet dann, ab dieser State erneut aufgerufen wird (mit einem um 1 erhöhten "i"-Zähler) oder ob ein den State "Postionsabfrage" gewechselt wird…

Im Moment werden allerdings alle States wiederholt, wenn mein Stop Button auf "erneute Bewegung" steht.
Wie kann ich jetzt verhindern, dass auch wieder eine Referenzfahrt durchgeführt wird? Diese setzt den Motor nämlich wieder auf 0°.
Oder es liegt an etwas anderem. Aber der Zähler bleibt immer nach einem Schritt stehen..
Ich hänge mein neues VI noch einmal an.

Liebe Grüße,
Jenni
Hallo Jenni,

Zitat:Im Moment werden allerdings alle States wiederholt, wenn mein Stop Button auf "erneute Bewegung" steht.
Bestimmt hast du das so programmiert…

Zitat:Wie kann ich jetzt verhindern, dass auch wieder eine Referenzfahrt durchgeführt wird? Diese setzt den Motor nämlich wieder auf 0°.
Indem du einfach den richtigen State für die nächste Iteration vorgibst…

Zitat:Aber der Zähler bleibt immer nach einem Schritt stehen..
Böser Fehler: du hast da einen Tunnel an der Case-Struktur auf "default if unwired" gesetzt!
Schieberegister-Werte sollte (nach Möglichkeit) immer durchverdrahtet werden! (Es gibt da diese Rechtsklick-Option der "verbundenen Tunnel"…)

Bei Statemachine hat es sich bewährt, wenn man sich deren Aufbau mal auf einem Blatt Papier aufmalt - inkl. der Übergangsbedingungen! (Man kann sowas auch mit MS-Visio o.a. Programmen malen.)
Vielen, vielen Dank Gerd!!!

Es funktioniert nun alles so, wie ich es mir gewünscht habe!

Liebe Grüße,
Jenni
Hallo ihr Lieben,

da ist gerade mal ein Tag vergangen und schon wieder habe ich ein Problem..
Ich hänge es hier an, da es sich eigentlich immer noch um das Zeigerdiagramm handelt.
Und zwar hat alles soweit funktioniert.
Allerdings musste ich noch meine Größen von Schritten in Grad umrechnen (der Schrittmotor macht 8000 Schritte für eine volle Umdrehung, also 360°).
Ich dachte das ginge ganz einfach. Aber das Zeigerdiagramm macht nicht das, was es soll..
Ich habe dann mal einen Indikator dazwischen gelegt, der mir auch die richtigen Winkel anzeigt. Das Diagramm gibt diese aber nicht aus.
Als Beispiel:
Ich gebe als Schrittgröße 90° ein. Der Motor macht also eine 90° Drehung, dann wieder (also 180°), dann wieder ...
Der Plot Helper bekommt auch genau diese 90° raus (bzw. 180, 270, ...) gibt aber etwas anderes an. Bzw zeigt er ganz kurz auf 90°, und dann etwas anderes.
Woran liegt das? Habt ihr eine Idee?


Viele Grüße,
Jenni
Seiten: 1 2 3
Referenz-URLs