LabVIEWForum.de
Kopplung zweier Ereignisse - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Kopplung zweier Ereignisse (/Thread-Kopplung-zweier-Ereignisse)



Kopplung zweier Ereignisse - TTT - 24.07.2018 18:36

Moin,

um mein Programm soweit kurz zusammenzufassen: Zwei Motoren fahren an einer Signalleitung auf einer Schiene entlang. Es werden dabei zwei Plattformen bewegt, die Laser und Detektor führen. Damit wird beim Klicken auf "Aufnehmen" gemessen, gemittelt und in einen Array eingetragen. Nachdem die Plattformen einmal entlang der Schiene gefahren sind, dreht sich ein Drehkranz und das Ganze fährt in die andere Richtung. Damit würden stand jetzt 66 (Zahl beliebig variierbar) Messwerte pro Grad gewonnen werden. Das funktioniert auch alles soweit. Nun ist mir das aber viel zu langsam. Es werden die Schritte gefahren, dann gemessen, gefahren, gemessen usw. Wesentlich eleganter und schneller wäre es, wenn die Motoren einmal komplett durchfahren (bekomme ich soweit auch hin), gleichzeitig aber die ganze Zeit gemessen wird. Das wäre erstens: schneller, zweitens: ich kann die Werte, die an der Stelle natürlich nicht mehr gemittelt werden müssen, beliebig aufteilen(alle Messwerte durch die Anzahl an Messungen die ich theoretisch durchführen wollen würde und diese dann mitteln).
Ist es möglich, solang meine kleinen Schrittmotoren fahren, die ganze Zeit zu messen, die Ergebnisse zwischenspeichern und dann wieder die neue Messreihe aufzunehmen? Das Ganze würde dann 180 Grad drehen. Im Programm sind aus Testzwecken nur 2 Grad eingetragen. Oder vielleicht ein Timer?
Hilft mir das vielleicht die synchronize timed loop starts.vi weiter?
Mein Hauptprogramm ist Arduino Stepper Motor.


Grüße
TTT


lv16_img


RE: Kopplung zweier Ereignisse - GerdW - 25.07.2018 09:48

Hallo TTT,

Zitat:Wesentlich eleganter und schneller wäre es, wenn die Motoren einmal komplett durchfahren (bekomme ich soweit auch hin), gleichzeitig aber die ganze Zeit gemessen wird.
Ja, da gebe ich dir Recht!

Zitat:Ist es möglich, solang meine kleinen Schrittmotoren fahren, die ganze Zeit zu messen, die Ergebnisse zwischenspeichern und dann wieder die neue Messreihe aufzunehmen?
Ja.
Du musst es nur genau so programmieren!
Wenn Dinge parallel stattfinden sollen, dann muss man sie eben auch parallel programmieren…

Probleme mit deinem Programm:
1. Es fehlt die Projektdatei! Warum ist da kein Projekt in deinem ZIP?
2. Das HauptVI ist schrecklich unaufgeräumt: wie soll man da den Durchblick wahren/bekommen?
3. Wenn du den OK-Button klickst, blockierst du dein UI - und kannst dann nicht mehr "Aufnehmen" oder "Stop linear" betätigen…
4. Musst du beim Messen wirklich in jeder Iteration der inneren FOR-Loop diesen LabJack erneut konfigurieren/initialisieren und stoppen?

Um wirklich parallel zu arbeiten, würde ich zwei getrennte Statemachines verwenden, die beide vom HauptVI aus ihre Kommandos per Queue erhalten…


RE: Kopplung zweier Ereignisse - TTT - 25.07.2018 15:07

Hallo GerdW,

danke erst mal für dein Feedback.

Würde das denn auch über Sequenzstrukturen funktionieren? Sprich in der ersten Sequenz den kleinen Motor fahren lassen und messen. Bei den Motoren "Steps Remaining" überprüfen, wenn fertig dann Messung abbrechen und speichern, in die nächste Sequenz gehen und den Drehring fahren lassen.
Ich habe versucht mich etwas in Queues einzulesen, aber ich wüsste dann doch nicht wie ich das darauf anwenden soll. Da ich in meiner Abschlussarbeit mit Labview ins kalte Wasser geschmissen wurde und meine Zeit begrenzt ist, fehlen einige Grundlagen und so kommen auch die unübersichtliche HauptVI zustande.


RE: Kopplung zweier Ereignisse - GerdW - 25.07.2018 15:22

Hallo TTT,

Sequenzstrukturen sorgen dafür, dass Dinge strikt nacheinander abgearbeitet werden.
Wie willst du damit erreichen, dass parallel gearbeitet wird?


RE: Kopplung zweier Ereignisse - TTT - 25.07.2018 15:49

Würde das messen und fahren der kleinen Motoren nicht zeitgleich anfangen, wenn ich beide in dieselbe Sequenz packe? Also fahren und messen in der ersten Sequenz und drehen in der Zweiten oder gibt es dann trotzdem einen Versatz?