LabVIEWForum.de
Synchronisation von Kamera und dispenser (RS232 Schnittstelle) - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Synchronisation von Kamera und dispenser (RS232 Schnittstelle) (/Thread-Synchronisation-von-Kamera-und-dispenser-RS232-Schnittstelle)

Seiten: 1 2


Synchronisation von Kamera und dispenser (RS232 Schnittstelle) - Eliii - 16.05.2014 10:08

Hallo,

für mein derzeitiges Experiment (Tropfenfall auf superhydrophobe Oberfläche) benötige ich ein Labview Programm mit dem ich meine High Speed Kamera mit dem Dispenser (der den Wassertropfen aus der Nadelspitze fallen lässt) so synchronisieren muss.

Die Kamera soll gleichzeitig mit dem Tropfenfall starten, um diesen von beginn an aufzunehmen.

Wie könnte ich dieses Problem lösen?

1. Schritt: Kamera und Dispenser synchronisieren

2. Schritt: beide gleichzeitig starten

Wäre wirklich sehr hilfreich wenn mir jemand weiterhelfen könnte.
Ich benutze Labview 8.6.

Mit freundlichen Grüßen
Eli


Ansteuerung von 2 Schnittstellen - Eliii - 27.05.2014 13:11

Hallo,

Im Rahmen meiner Bachelorarbeit beschäftige ich mich seit Kurzem mit LabView und bin auf ein Problem gestoßen.

Zu erst einmal zu meinem Experiment:
Ich möchte das Verhalten eines Wassertropfens auf einer hydrophoben Probe beobachten. Der Tropfen wird durch einen Dispenser ausgelöst (USB2) und gleichzeitig mit einer HighSpeed Kamera (USB1) aufgenommen. Zur Zeit geschieht dies noch manuell durch die Maustaste und einen Fußtaster der zu dem Dispenser geschickt wurde.

Das Ziel ist es, Kamera und Dispenser durch einen Klick gleichzeitig zu starten. Da dies bei LabView (wie ich erfahren hab) allerdings meist trotzdem mit 1ms Zeitverzögerung geschieht, lasse ich den Dispenser 2ms später als die Kamera starten.

Das Problem ist jetzt allerdings noch, dass der Dispenser, da ich ja nur 1 Tropfen benötige, höchstens 1s an sein darf. Bei meinem jetzigen Programm laufen aber Kamera und Dispenser so lang, bis ich den Stoppknopf betätige.

Wie sollte ich am Besten an dieses Problem heran gehen? 2 Schleifen die parallel laufen vll?
Ich bin mir nicht ganz sicher wie das dann aussehen müsste.

Mit freundlichen Grüßen
Elisa


RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle) - GerdW - 27.05.2014 13:25

Hallo Eliii,

habe mal die zusammengehörenden Themen wieder zusammengefügt. Bitte keine Doppelposts…

Zitat:Das Ziel ist es, Kamera und Dispenser durch einen Klick gleichzeitig zu starten. Da dies bei LabView (wie ich erfahren hab) allerdings meist trotzdem mit 1ms Zeitverzögerung geschieht, lasse ich den Dispenser 2ms später als die Kamera starten.
1. Du solltest dann die COM-Ports schon initialisiert haben, bevor du auf den Button-Klick wartest. Sonst holst du dir hier auch unnötige Wartezeit ins VI…
2. Wie hast du von dieser "meist 1ms Zeitverzögerung" erfahren? Wer behauptet so etwas?
3. 2ms auf einem Windows-System zu warten und dann zu glauben, dass dies exakt so auch passiert, ist blauäugig!
4. Wieso liest du jeweils null Bytes von den COM-Ports?
5. Der Versand deiner Befehle über die COM-Ports benötigst auch seine Zeit. Bei echten COM-Ports würden die Befehle mit den eingestellten 9600bd ~= 1kB/s = 1B/ms transportiert. Bei virtuellen COM-Ports, wie du sie anscheinend verwendest, musst du Latenzen/Prioritäten auf dem USB-Bus in Kauf nehmen.


RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle) - Eliii - 27.05.2014 13:49

Von der Wartezeit von ca 1ms hat mir ein Kommilitone berichtet, der vor einiger Zeit selbst mit Labview gearbeitet hat. Da ich selber noch Neuling bin, habe ich erst einmal darauf vertraut.
Wenn dies nicht der Fall ist, kann ich die Verzögerungszeit ja wieder raus nehmen.

Es kommt nicht auf die ms an, bei denen der Dispenser startet. Es ist nur wichtig, dass alles was geschieht auch von der Kamera aufgenommen wird.

Dass nur 0 Bytes von den COM-Ports eingelesen werden, liegt zum einen daran, dass ich im Handbuch nocht nichts gefunden habe und zum anderen selber nicht weiß wie groß der Wert sein soll.


RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle) - GerdW - 27.05.2014 14:03

Hallo Eliii,

Zitat:Es kommt nicht auf die ms an, bei denen der Dispenser startet. Es ist nur wichtig, dass alles was geschieht auch von der Kamera aufgenommen wird.
Wenn du also sicher gehen willst, wirst du erst die Kamera starten und danach den Dispenser. Solange du dies aber über den (virtuellen) COM-Port machst, musst du Versandzeiten für die Befehle und deren Ausführungszeiten auf dem jeweiligen Gerät mit einkalkulieren.

Oder deine Geräte bieten die Möglichkeit eines echten Hardware-Triggers (mit im Handbuch angegebenen minimalen Reaktionszeiten)…


RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle) - Eliii - 28.05.2014 08:52

Dass die Kamera zuerst startet, habe ich doch mit der Verzögerungszeit des Dispensers gelöst oder?!

Wie kann ich aber den Dispenser einzeln timen, sodass dieser dann lediglich 1s läuft?

Mit freundlichen Grüßen


RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle) - GerdW - 28.05.2014 08:59

Hallo Eliii,

Zitat:Wie kann ich aber den Dispenser einzeln timen, sodass dieser dann lediglich 1s läuft?
Sowas würde ich mit parallelen Schleifen lösen, je eine für die Kamera und den Dispenser. Dann kannst du in der Dispenser-Loop eine Statemachine unterbringen, die dafür sorgt, dass der Dispenser eine Sekunde nach dem Start-Befehl einen Stopp-Befehl gesendet bekommt…


RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle) - Eliii - 28.05.2014 09:13

Die 2 Schleifen hatte ich in einem Versuch auch schon realisiert, aber wie funktioniert denn dann genau die Statemachine?


RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle) - GerdW - 28.05.2014 09:15

Hallo Eliii,

ich würde States wie "Warten auf Startbefehl", "Starten", "1s warten" und "Stoppen" realisieren!

Notfalls tut es auch eine einfache Sequenz mit 3 Frames: Start, 1s warten, Stop…


RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle) - jg - 28.05.2014 09:37

(28.05.2014 08:52 )Eliii schrieb:  Dass die Kamera zuerst startet, habe ich doch mit der Verzögerungszeit des Dispensers gelöst oder?!
Nein, hast du nicht!
Du übergibst quasi gleichzeitig (das weißt du aber nicht sicher) Strings an 2 verschiedene VISA Write. Aber: erst nach dem VISA Write hast du ein Wait eingebaut, der String ist also schon längst an die API übergeben. Das Wait ist vollkommen überflüssig.

Zusätzlich kommt dann noch hinzu:
Wann die VISA API (inkl. Windows, etc. pp.) wirklich die Strings per RS-232 weitergibt, das kannst du nicht vorhersagen - da sind mehrere Treiber Schichten dazwischen. RS-232 ist inhärent nicht echtzeitfähig. Und wie Gerd schon geschrieben hat, die Übertragung braucht bei 9600 baud pro ca. 1 ms pro ASCII-Zeichen.

Gruß, Jens