12.12.2016, 09:31
12.12.2016, 09:38
Hallo Gerd,
danke für die Antwort.
Ich hänge mein derzeitiges VI mal an diese Nachricht an
danke für die Antwort.
Ich hänge mein derzeitiges VI mal an diese Nachricht an
12.12.2016, 09:49
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…
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…
12.12.2016, 10:17
Wieder einmal Danke für deine hilfreiche Antwort Gerd!
Ich werde deine Vorschläge direkt mal umsetzen.
Ganz liebe Grüße,
Jenni
Ich werde deine Vorschläge direkt mal umsetzen.
Ganz liebe Grüße,
Jenni
12.12.2016, 11:17
Hallo Gerd,
deine erste Verbesserung habe ich erfolgreich eingebaut
Ich habe aber noch eine kurze Frage zu deiner zweiten Anmerkung.
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
deine erste Verbesserung habe ich erfolgreich eingebaut
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
12.12.2016, 11:22
Hallo Jenni,
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…
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…
12.12.2016, 13:06
Hallo Gerd,
ich habe da noch eine Frage:
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
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
12.12.2016, 13:32
Hallo Jenni,
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.)
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.)
12.12.2016, 14:21
Vielen, vielen Dank Gerd!!!
Es funktioniert nun alles so, wie ich es mir gewünscht habe!
Liebe Grüße,
Jenni
Es funktioniert nun alles so, wie ich es mir gewünscht habe!
Liebe Grüße,
Jenni
13.12.2016, 13:05
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
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