16.05.2014, 10:08
Beitrag #1
|
Eliii
LVF-Grünschnabel
Beiträge: 17
Registriert seit: May 2014
8.6
2014
DE
|
Synchronisation von Kamera und dispenser (RS232 Schnittstelle)
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
|
|
|
27.05.2014, 13:25
(Dieser Beitrag wurde zuletzt bearbeitet: 27.05.2014 13:32 von GerdW.)
Beitrag #3
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle)
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.
|
|
|
27.05.2014, 13:49
Beitrag #4
|
Eliii
LVF-Grünschnabel
Beiträge: 17
Registriert seit: May 2014
8.6
2014
DE
|
RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle)
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.
|
|
|
27.05.2014, 14:03
Beitrag #5
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle)
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)…
|
|
|
28.05.2014, 08:52
Beitrag #6
|
Eliii
LVF-Grünschnabel
Beiträge: 17
Registriert seit: May 2014
8.6
2014
DE
|
RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle)
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
|
|
|
28.05.2014, 08:59
Beitrag #7
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle)
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…
|
|
|
28.05.2014, 09:13
Beitrag #8
|
Eliii
LVF-Grünschnabel
Beiträge: 17
Registriert seit: May 2014
8.6
2014
DE
|
RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle)
Die 2 Schleifen hatte ich in einem Versuch auch schon realisiert, aber wie funktioniert denn dann genau die Statemachine?
|
|
|
28.05.2014, 09:15
(Dieser Beitrag wurde zuletzt bearbeitet: 28.05.2014 09:16 von GerdW.)
Beitrag #9
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle)
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…
|
|
|
28.05.2014, 09:37
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Synchronisation von Kamera und dispenser (RS232 Schnittstelle)
(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
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
| |