LabVIEWForum.de - Datenerfassung synchronisieren

LabVIEWForum.de

Normale Version: Datenerfassung synchronisieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Leute,
ich habe ein Problem, von dem ich nicht recht weiß wie ich es anpacken soll. ES geht um Folgendes. Ich lese in einer SChleife eine Sensorspannung mit 1000Hz ein, wobei die in der Schleife eine Wartezeit von 100ms eingestellt ist. Bisher ist mir eigentlich egal wie die exakten Zeitwerte sind, die will ich eh noch abändern, da zuviele Daten kommen.
Jetzt kommt aber dazu, dass ich die Position eines Mikropositioniertisches auslesen will und zwar so oft, dass ich pro SChleifendurchlauf gleichviele Daten aus Sensor und Tisch bekomme.
Das Endziel ist eben, die Sensorspannung über Tischposition grapisch darzustellen bzw. später auszuwerten.

Wie kann ich das Timing so einstellen, dass ich von beiden Quellen gleichviele WErte bekomme und zwar am besten als verknüpftes WERtepaar?


Kurze Erklärung der beiden Messprozesse:
Die Sensorspannung wird über NI PCI-6221 eingelesen. Dazu ist ein entsprechender Task erstellt.

Die Tischposition liefert mir ein vom Hersteller mitgeliefertes VI, dass mir pro Aufruf einen Wert gibt.

Ich hatte mir jetzt überlegt, dieses Tisch-VI in der Hauptschleife widerrum in eine Schleife zu packen (zb For), die genauso oft abläuft wie Messwerte von meiner Karte kommen. Allerdings bin ich mir unsicher ob das wirklich das liefert was ich will. Auch habe ich jetzt mehrfach gelesen, dass das Timing nicht absolut ist, sondern vom Prozessor abhängt. Daher ist es wohl nicht über dieses Software Timing exakt lösbar oder irre ich mich?

Ich danke für Hilfestellungen und Tipps. Ich hoffe das Problem ist klar geworden. Ein VI psoten ist nicht so gut, da die Firma hier das nicht so mag. Also wenns ohne geht wäre gut.

Viele Grüße
Wolfgang
Hi,

1. Wenn's dir zu viele Daten sind, dann setze halt die Abtastfrequenz von 1 kHz nach unten. Die Wartezeite in der Schleife hat GAR NICHTS zu tun!
2. Du kannst deine Datenerfassung auf "Einzelwert" umstellen, und immer wenn du einen Wert erfasst hast, liest du auch die Position. Wie stellt das PositionsVI zur Verfügung, über welche Schnittstelle? Der Zeitwert beim Aufruf dieses VI wird auf jeden Fall immer vom HW-Zeitpunkt, den die AI-Karte liefert, abweichen...
3. Kannst du die Position nicht evtl. auch als Analogwert einlesen mit dem gleichen Task?

A.
Hallo Achim,
danke für die rasche Antwort.
' schrieb:1. Wenn's dir zu viele Daten sind, dann setze halt die Abtastfrequenz von 1 kHz nach unten. Die Wartezeite in der Schleife hat GAR NICHTS zu tun!
Da hab ich mich falsch ausgedrückt. Dass die Schleifendauer nix mit dem Abtastwert der Karte zu tun hat, war mir klar. Die Speicherung der Daten aber schon oder irre ich mich? D.h. WEnn ich mit 1kHz abtaste und die SChleife 100ms dauert, dann sollten pro SChleifendurchlauf 100 WErte gespeichert werden. Zumindest so ungefähr, je nach Prozessorauslastung halt bzw. WIndows Einflüssen auf die SChleifendauer.
Ich will die Abtastfrequenz später auch runtersetzen, nur weiß ich im Moment noch nicht genau wieviele Daten ich brauche, das will ich machen, wenn wirklich alles angeschlossen ist und ich sehe wie schnell relevante Änderungen stattfinden.

Zitat:2. Du kannst deine Datenerfassung auf "Einzelwert" umstellen, und immer wenn du einen Wert erfasst hast, liest du auch die Position. Wie stellt das PositionsVI zur Verfügung, über welche Schnittstelle? Der Zeitwert beim Aufruf dieses VI wird auf jeden Fall immer vom HW-Zeitpunkt, den die AI-Karte liefert, abweichen...
Der Tisch ist über COM port angeschlossen. Das ist ein PI DC Lineartisch (M404.4DG) mit entsprechender PI Motorsteuerung (C-862). Hab ihn halt Standard mäßig verkabelt und einfach mal geschaut wie weit ich komme. Die Idee mit dem Einzelabtastetn pro SChleifendurchlauf ist gar nicht schlecht denke ich. Ich werds mal ausprobieren.

Zitat:3. Kannst du die Position nicht evtl. auch als Analogwert einlesen mit dem gleichen Task?

Würde bestimmt irgendwie gehen, nur müssste ich dann vermutlich die gesamte Steuerung neu basteln und ich schätze, dass das meine verfügbare Zeit nicht zulässt.

Ich probiere es mal mit der EInzelabtastung aus, vielleicht komme ich da ja auf einen grünen Zweig. Falls noch jemand einen guten Tipp hat, ich bin für alles dankbar.
Hallo,
ich will nur kurz erläutern wie ich oben genanntea Problem gelöst habe. Wie von Achim vorgeschlagen, habe ich die Messkarte auf Einzelwert umgestellt habe. Den Fahrweg des Tisches habe ich jetzt in Intervalle aufgeteilt, d.h. wenn man gibt einen WEg mit einer bestimmten Messauflösung ein, dann wird ein Befehls-Array erstellt in dem der WEg in einzelne Schritte aufgeteilt wird. Bei jedem Schleifendurchlauf wird dann ein Befehl gesendet und solange gewartet, bis der Tisch steht. Dann wird Position und der Messwert ausgelsen. So ist gewährleistet, dass der Psoitionswert auch wirklich zu dem Spannungswert gehört.

Ich denke, dass das soweit mein Problem löst. Falls jemand ERgänzungen/Fragen hat immer raus damit. Ansonsten hoffe ich, dass meine Lösung auch anderen weiterhilft.

Viele GRüße
Wolfgang
Referenz-URLs