LabVIEWForum.de
Synchrone Datenerfassung von Serieller Schnittstelle und DAQ - 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: Synchrone Datenerfassung von Serieller Schnittstelle und DAQ (/Thread-Synchrone-Datenerfassung-von-Serieller-Schnittstelle-und-DAQ)



Synchrone Datenerfassung von Serieller Schnittstelle und DAQ - darkbeppo - 16.12.2014 11:35

Hallo,

in meinem LabVIEW Programm habe ich letztens ein nicht so schönes Phänomen entdeckt.

Ich beziehe Daten von zwei Stellen. Einmal eine NI Karte über DAQ und einmal über die Serielle Schnittstelle (RS485-USB).
Die Daten werden auch alle aufgezeichnet und in einem Textdokument gespeichert.

Wenn ich das Programm aber abbreche und neustarte, dann verschieben sich die Messwerte bezüglich der Zeit. Die Daten von DAQ pausieren im Timecode, während die Daten der Seriellen Schnittstelle nahtlos weiter geschrieben werden. Es ergibt sich also ein Versatz der Messwerte aus DAQ und Serieller Schnittstelle. Der Versatz ist variable und nicht Konstant. Im ersten Bild habe ich eine Beispielkurve aufgezeigt.
Beim ersten grünen Balken wird das Programm beendet. Dann wird ein paar Sekunden gewartet und das Programm wieder gestartet um einen anderen Messpunkt aufzunehmen. Die DAQ Daten zeigen eine Lücke von x-Sekunden pause auf. Die Serielle Schnittstelle setzt an der Stelle an, wo der Ablauf unterbrochen wurde. Hört dementsprechend auch früher auf.
[attachment=51615]

Ich habe leider keine Möglichkeit das Problem zu beheben. Ich habe auch schon mit dem Gedanken gespielt, dass die Serielle Schnittstelle weiter Datenaufnimmt. und in einen Ringspeicher packt, solange keine Daten gespeichert werden. Aber das kann ich leider nicht sagen.

Ich würde mich über ein paar Tipps freuen. Im Anhang sind auch die Screenshots aus LabVIEW hinterlegt.

Grüße
Sebastian

[attachment=51616] [attachment=51617]


RE: Synchrone Datenerfassung von Serieller Schnittstelle und DAQ - GerdW - 16.12.2014 13:30

Hallo beppo,

wie verträgt sich der Ansatz "synchrone Datenerfassung" mit der Nutzung einer Sequenzstruktur, die ein Nacheinander der Datenerfassung erzwingt?

Vorschlag:
- parallele Schleifen für beide Datenerfassungskanäle.
- saubere Initialisierung der seriellen Schnittstelle inkl. Buffer leeren bei Start des Programms
- Verzicht auf "Bytes at port", wenn du mit dem TermChar arbeitest!
- sauberes Schließen der seriellen Schnittstelle bei Programmende


RE: Synchrone Datenerfassung von Serieller Schnittstelle und DAQ - darkbeppo - 16.12.2014 14:54

Hallo danke für die Hinweise.
leider kriege ich es nicht so hin wie beschrieben.
Wenn ich den Inhalt der einzelnen Sequenzen in jeweils eine wheile schleife schreibe, dann bekomme ich gar keine Werte mehr und das Programm stürzt ab.

Ich bin leider noch recht frisch in LabVIEW und kann mir die richtige Zusammensetzung der schleifen nicht vorsstellen.

Wäre es möglich ein beispiel für die parallele Aufnahme von daq und seriell zu geben ?


RE: Synchrone Datenerfassung von Serieller Schnittstelle und DAQ - GerdW - 16.12.2014 14:59

Hallo beppo,

Zitat:Ich bin leider noch recht frisch in labview
Dann kann ich die Links in meiner Signatur empfehlen.
Und noch ein Tipp: eine falsche Schreibweise von LabVIEW wird auch nicht gern gesehen! Big Grin

Zitat:Wäre es möglich ein beispiel für die parallele Aufnahme von daq und seriell zu geben ?
Häng doch einfach mal dein VI (in LV2011: Speichern für vorige Version) an…


RE: Synchrone Datenerfassung von Serieller Schnittstelle und DAQ - darkbeppo - 17.12.2014 11:41

Ich sehe keine falsche Schreibweise von LabVIEW Angel_not

Ne hab ich geändert, will ja niemanden wütend machen.

Nach etwas stöbern und lernen im Internet, habe ich die Abfrage der Eingänge etwas umgestaltet. Nun sieht es wie folgt aus.

[attachment=51636]

Und das beste daran. Es funktioniert. Der flash buffer am Anfang der Schleife der jedes mal ausgeführt wird bevor die Daten erfasst werden ist der Schlüssel zum Sieg.

Was ich noch nicht verstanden hab wie ich das "Bytes at Port" richtig ersetze.

Grüße


RE: Synchrone Datenerfassung von Serieller Schnittstelle und DAQ - GerdW - 17.12.2014 12:46

Hallo beppo,

Zitat:Was ich noch nicht verstanden hab wie ich das "Bytes at Port" richtig ersetze.
Da du mit TermChar arbeitest, musst du stattdessen einfach eine genügend große Zahl von zu lesenden Bytes vorgeben (größer als die Zahl der erwarteten Bytes).
VISARead bricht den Lesevorgang ab, sobald
- das TermChar eintrifft
- die Anzahl der zu lesenden Bytes erreicht wurde
- der TimeOut eintritt, ohne vorher TermChar oder genügend Bytes zu lesen…