Unstetiger Sinus Verlauf mit Analoger Eingabekarte
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
es gibt ja keinen overflow, weil es ja ein single scan ist.
beim single scan wird immer genau ein wert gelesen: treiber init -> sample lesen -> treiber schließen. das macht er - wenn meine theorie stimmt und ich das richtig verstanden habe - in einer for-schleife 10000 mal.
einen buffer overflow gibt es nur bei einer kontinuierlichen erfassung (wenn man die samples im puffer nicht schnell genug ausliest)
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
Hallo zusammen!
Nun, nachdem ich etwa 1,5h gesessen bin und den Fehler immer noch nicht raus habe, bin ich mal zum CIP-Pool gegangen, um ins Forum zu schauen...danke für die Antworten!
Ich habe mittlerweile heraus, dass sich die Sprünge rein theoretisch nur bei großen Frequenzen als störend bemerkbar machen. Denn bei etwa 30 Hz der Sinus-Schwingung (mehr bräuchte ich am Prüstand nicht) und diversen Enstellungen der "Read1AnalogInput" Funktion, sind die Fehler nicht so gravierend.
Mit diversen Einstellungen meine ich z.B. einen "Convert_Timing" Parameter, der angibt, wieviel Zeit die Karte benötigen soll, bis ein Messwert digitalisiert wird (zwischen 10 und etwa 32000 Mikrosekunden).
Eine sehr schöne Lösung ist es trotzdem nicht.
Das Ziel der Messung besteht darin, Drehwinkel und Drehmoment einer Elastomersternkupplung zeitgleich aufzunehmen und anschließend diverse Berechnungen auszuführen.
Für die Messung des Drehwinkels benutze ich eine Zählerkarte IK220 von Haidenhein(PCI), das Drehmoment soll eben von der Addi-Data APCI-3001 gemessen werden.
Da ich also 2 Karten im Rechner habe - wie sollte ich für einen sauberen, stetigen Datenempfang mein Programm umprogrammieren, um von beiden Karten zu einem Zeitpunkt zusammengehörige Messpaare zu bekommen? Gibt es dafür Beispiele? Mit dem DAQmx kann ich ja leider nicht arbeiten.
Ich habe wirklich noch keine Idee im Kopf.
Falls ich die Daten blockweise lese, müssen von beiden Karten zeitgleich die gleiche Anzahl Messwerte übertragen werden. Geht das?
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
hmm .. bevor ich nun weiter spekuliere, beantworte doch einfach mal folgende Frage:
ist die "Read1AnalogInput" Funktion eine Funktion, die kontinuierlich Daten erfasst und in einen Puffer schreibt, oder wird zum Zeitpunkt des Aufrufes genau ein Wert von der Karte gelesen? (=Single Scann)
ja, mit DAQmx kann man leider nicht arbeiten. Drum sag ich immer: Wenn LabVIEW, dann NI Hardware. Die 200 Euro, die andere Anbieter billiger sind holt man locker über die Entwicklungszeit wieder rein.
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
"Read1AnalogInput" liest genau einen Wert aus... wie ist das denn dann?
Der FIFO auf der Karte wird ja eigentlich bei 10 Mikrosekunden Convert_Timing viel schneller beschrieben, als er ausgelesen wird...
was passiert mit den restlichen Messwerten und welchen Messwert bekomme ich mit meiner Funktion eigentlich?
Mit der anderen Messkarte ist es genauso, eine Funktion zum Auslesen des momentanen Messwerts.
Beide Funktionen sind recht simpel in einer Schleife plaziert und in einem Array gespeichert.
P.S. Die Unstetigkeiten treten auch ohne Diagramm auf...
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
Ach, mir fällt gerade ein, dass die Karte ja bestimmt nur liest, wenn sie den Auftrag bekommen hat, sprich wenn ich ihr sage, lies einen Wert aus - und das dauert dann 10 Mikrosekunden. Oder liest sie kontinuierlich und spukt mir nur einen dieser Werte aus?
Danke nochmal für die Hilfe!
Mfg
mAcRiX
P.S. Es ist toll, wenn man mit seinen Problemen nicht so alleine da steht
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
Ich habe gerade eine andere Funktion gefunden, die mir helfen könnte:
"i_PCI3001_InitAnalogInputAcquisition"
Aufgabe:
Diese Funktion initialisiert eine zyklische Konvertierung.
Die Rangordnung der analogen Eingänge wird über die Sequenztabelle gesetzt.
Die Sequenztabelle ermöglicht es, den Eingangsspannungsbereich und die Verstärkung für jeden analogen Eingang zu setzen. Siehe Beispiel 1. Die DMA Option (PCI3001_DMA_USED) ermöglicht es, bei hoher Frequenz analoge Werte im Hintergrund zu erfassen.
Bei Konvertierungsende wird ein Interrupt erzeugt. In Ihrer Interruptroutine
wird eine ‘2’ über den Parameter b_InterruptMask übergeben. Der DMA
Buffer wird über den Parameter pui_AnalogInputValue zurückgegeben.
Siehe Funktion "i_PCI3001_SetBoardIntRoutineXXX".
Falls mir das weiter hilft, kann ich das mit der anderen Karte synchronisieren?
Unstetiger Sinus Verlauf mit Analoger Eingabekarte
Folgendes:
Mittlerweile habe ich eine mögliche Lösung, was sagt ihr dazu?
Ich habe herausgefunden, dass sich beide Karten extern triggern lassen.
Über den externen Trigger würde ich sicher stellen, dass beide Messwerte zeitgleich erfasst werden.
Beide Karten würden die Werte zwischenspeichern und ich muss sie nur noch mit einer Schleife vor dem Buffer Overflow in die Arrays einlesen.
Funktioniert das relativ problemlos?
Wie kann man ein externes Triggersignal erzeugen? (möglichst über LabVIEW, vielleicht an einen der PC-Ports?)