Hallo LV Forum,
ich habe gerade erst mit LabVIEW begonnen und bin bereits überfordert
Da ich mit der Dokumentation von NI nicht weiterkomme und in diesem Forum keine direkte Lösung finden konnte hoffe ich nun das ihr mir weiterhelfen könnt.
Bei meinem Messaufbau werden 2 Sensoren (liefern analoge Spannungen an AI0 und AI1) entlang einer Strecke bewegt. Neben den Messwerten der Sensoren soll auch Position und geschwindigkeit miterfasst werden. Hierz dient ein encoder (Gerät das Pro Umdrehung 1200 Impulse generiert hängt an PFI9 als clock dient CTR0).
Die Messung der analogsignale Hab ich im Analogin_write.vi realisiert. Dieses Vi legt ein logfile an und speichert bis zum abbruch einfach immer 1000 Messwerte weg.
Ein Vi das in der Lage ist meine Drehimpulse zu zählen habe ich im Example Finder unter:
Hardware Input and Output -> DAQmx -> Events -> Gen Event for Ext Signal.vi
gefunden.
Nun habe ich eine Reihe von Fragen und Problemen wenn ich die beiden mit einander nutzen möchte. Ziel ist es beide so zu starten das sie möglichst synchron mit dem logging starten. Das soll heisen das "Gen Event for Ext Signal.vi" mit dem logging startet wenn "Analogin_write.vi" die Schleife betritt, so das beide Logdateien dann den Zeitstempel 0 erhalten.
Wenn ich beide Tasks in ein VI kopiere und ein Filewrite in die Schleife des "Gen Event for Ext Signal.vi" einbaue, startet das loggen der Drehimpulse allerdings erst wenn der erste Drehimpuls auftritt. Wenn die Sensoren am Anfang stillstehen (tun sie) kommt es zu einer Verzögerung.
Gibt es eine Möglichkeit den Zeitstempel der Schleife in "Analogin_write.vi" zum Beispiel in einer Variabel zwischenzuspeichern und in der Schleife in "Gen Event for Ext Signal.vi" bei jedem durchlauf einfach mitzuspeichern?
Dies würde zu 2 Logdateien führen eine im Format:
Zeitstempel Analogwert1 Analogwert2
und einer im Format:
Zeitstempel Zählerwert aktueller Zeitstempel aus "Analogin_write.vi"
das wäre ok aber nicht ideal.
Lieber wäre mir eine Lösung bei der das Loging mit dem VI gestartet wird und die Schleifen einfach asynchron schreiben in etwa so:
Zeitstempel1 Analogwert1 Analogwert2 leer
Zeitstempel2 leer leer Zählerstand N
Zeitstempel3 leer leer Zählerstand N+1
Zeitstempel4 leer leer Zählerstand N+2
Zeitstempel5 Analogwert1 Analogwert2 leer
denkbar wäre notfalls auch in der Schleife in "Analogin_write.vi" immer nur den aktuellen Zählerstand aus "Gen Event for Ext Signal.vi" mitzuspeichern:
Zeitstempel1 Analogwert1 Analogwert2 Zählerstand N
Zeitstempel2 Analogwert1 Analogwert2 Zählerstand N+2
da dies aber auch ungenauer ist als die mittlere Variante würde ich die mittlere bevorzugen.
Über Anregungen und Lösungsvorschläge würde ich mich sehr freuen und Rückfragen beantworte ich natürlich auch gerne.
schönen mittag noch
Bernd