' schrieb:es muss doch möglich sein so eine einfache sache wie ne stinknormale sinusschwingung mit LV und eine NI-karte hinzubekommen
Es ist möglich.
Ausprobiert hab ich folgendes:
Der DaqMx-Konfigurator (kennst du das Teil?) kann eine Sinus-Schwingung mit 300Hz, 100 Werte pro Schwingung, ausgeben. Danach sagt er irgendwie: System zu langsam. Bei weniger Werten pro Sinus kann man die Frequenz erhöhen; das gibt dann aber Oberwellen. Zwischendurch kannst du CDs brennen - also Ausgabe des Sinusses in Echtzeit. Ich hab's mit einem Oszilloskop verifiziert. Fazit: Es geht.
Bis zu welcher Frequenz willst du denn ausgeben? 300Hz mit 100 Werten macht immerhin 33µs - das ist schon ein Stück Arbeit selbst für einen Prozessor. Per Software einen Sinus auszugeben hat eine obere Grenze.
Leider kann ich nicht weiter probieren, weil die DaqMX-VIs in LV8.2 plötzlich nicht mehr kompilierbar sind.
Befolge mal dc6xs' Rat und eliminiere die Expess-VIs. Von denen hört man nichts gutes.
Schau wir mal das VI Daq-Schreiben an. Probier mal dieses VI in einen eigenen While-Schleife (=> eigene Task) und schließ einen Signal-Verlauf für eine Sinus-Schwingung (oder 10 oder 100) an.
' schrieb:Das Einfachste wäre es wohl in einer Schleife ein Sinus erzeugen, welcher in einem Array vorliegt.
ok ich habs mal probiert und hab mich dabei an einem beispiel orientiert das für meine zwecke wohl in gewisser weise herhalten kann (siehe bild im anhang). mit ist jetzt allerdings immer noch nicht ganz klar wie ich das von mir markierte array erzeuge bzw wo die daten für den sinus herkommen bzw wie erstelle ich diese arraydaten?
' schrieb:Es ist möglich.
Ausprobiert hab ich folgendes:
Der DaqMx-Konfigurator (kennst du das Teil?) kann eine Sinus-Schwingung mit 300Hz, 100 Werte pro Schwingung, ausgeben. Danach sagt er irgendwie: System zu langsam. Bei weniger Werten pro Sinus kann man die Frequenz erhöhen; das gibt dann aber Oberwellen. Zwischendurch kannst du CDs brennen - also Ausgabe des Sinusses in Echtzeit. Ich hab's mit einem Oszilloskop verifiziert. Fazit: Es geht.
Bis zu welcher Frequenz willst du denn ausgeben? 300Hz mit 100 Werten macht immerhin 33µs - das ist schon ein Stück Arbeit selbst für einen Prozessor. Per Software einen Sinus auszugeben hat eine obere Grenze.
Leider kann ich nicht weiter probieren, weil die DaqMX-VIs in LV8.2 plötzlich nicht mehr kompilierbar sind.
Befolge mal dc6xs' Rat und eliminiere die Expess-VIs. Von denen hört man nichts gutes.
Schau wir mal das VI Daq-Schreiben an. Probier mal dieses VI in einen eigenen While-Schleife (=> eigene Task) und schließ einen Signal-Verlauf für eine Sinus-Schwingung (oder 10 oder 100) an.
leider konnte ich keinen daqmx-konfigurator finden - wo finde ich den? kannst du mir eventuell einen screenshot von deinem aufbau schicken? frequenzen benötige ich von 500hz bis 20000hz.... ich möchte nämlich einen kleinen regelkreis aufbauen: ein pizoelektrischer shaker soll von der karte angesteuert werden und gleichzeitig anhand eines beschleunigungssensors ausgemessen werden. so soll die amplitude bzw die frequenz über den frequenzbereich konstant gehalten werden.
ich habe das mit dem daq-schreiben ausprobiert. leider kommt am ausgang ein ziemliches "kuddelmuddel" raus. sieht mir nach rauschen aus. beim verändern der amplitude oder frequenz verschiebt sich blos der mittelwert der schwingung
- aufbau habe ich angehängt..... was hab ich falsch gemacht?
gruß
daniel
' schrieb:leider konnte ich keinen daqmx-konfigurator finden - wo finde ich den?
Bei mir auf dem Desktop? :PAnsonsten musst du warten, bis ich wieder an einem LV-fähigen Rechner mit MAX sitze, dann sag' ich dir, wie das Teil heißt. Im übrigen muss man das extra installieren.
Zitat:frequenzen benötige ich von 500hz bis 20000hz....
20kHz? Vergiss' es. Bei dieser Frequenz keine Software mit Frontpanel.
Zitat:ich möchte nämlich einen kleinen regelkreis aufbauen: ein pizoelektrischer shaker soll von der karte angesteuert werden und gleichzeitig anhand eines beschleunigungssensors ausgemessen werden. so soll die amplitude bzw die frequenz über den frequenzbereich konstant gehalten werden.
Frequenzgeneratorkarte (angeblich mit Beschleunigungsaufnehmer) PCI NI 5401, 2000 Euronen. (Und immer dran denken: Willst du schnell fahren, muss du einen SLK nehmen, keinen Standard-Golf. Wenn du Steine fahren willst nimmst du ja auch einen Unimog und keinen SLK und keinen Standard-Golf).
Nur mal so als Beispiel und Anhaltswert:
Ich steuere hier nen Schrittmotor (PD2-T5718M2804von
nanotec) per Parallelport an,
sprich ich gebe einen Takt und ein Richtungssignal aus. Auf die fallende Flanke des Taktes macht der Motor einen Schritt. Bei Taktsignalen >20ms Pulsdauer merkst Du jede Bewegung der Maus am Jitter des Taktsignals. Und Takte mit einer Pulsdauer kleiner 2ms sind nicht drinne, da LV ja intern mit 1ms Schritten rechnet.
Also Windows und Echtzeitanforderungen sind nur sehr begrenzt kompatibel. (Für sehr kleine werte von kompatibel
)
Der Jitter und die genaue Pulsdauer sind bei meiner Anwendung eher unkritisch, da ich die Schritte zähle und darüber die Antennenposition bestimme.
' schrieb:20kHz?[/b] Vergiss' es. Bei dieser Frequenz keine Software mit Frontpanel.
...
In dem Sinne,
Gruß, Rob
' schrieb:20kHz? Vergiss' es. Bei dieser Frequenz keine Software mit Frontpanel.
könnte es eine software geben, die das schafft? mathlab vielleicht?
' schrieb:Frequenzgeneratorkarte (angeblich mit Beschleunigungsaufnehmer) PCI NI 5401, 2000 Euronen. (Und immer dran denken: Willst du schnell fahren, muss du einen SLK nehmen, keinen Standard-Golf. Wenn du Steine fahren willst nimmst du ja auch einen Unimog und keinen SLK und keinen Standard-Golf).
ich werds an meinen prof. weiterleiten *g*
' schrieb:könnte es eine software geben, die das schafft? mathlab vielleicht?
ich werds an meinen prof. weiterleiten *g*
Das hat weniger was mit der Anwendungssoftware zu tun.. eher liegt das an Windows und dem Multitasking.
Über die Soundkarte sind ja je nach Hardware bis zu 48kSPS, bei einigen teueren Recording-Karten ja sogar 96kSPS möglich.
Von daher wäre es vielleicht möglich die Signale über die Soundkarte zu erzeugen, mit nem Entkoppelverstärker eventuell zu Puffern und das Signal passend zu konditionieren.
Allerdings würd ich da erst mal schauen wie gut die Soundkarten wirklich sind.
Oder halt doch die etwas universellere HW die NI anbietet.
Gruß, Rob
' schrieb:Bei Taktsignalen >20ms Pulsdauer merkst Du jede Bewegung der Maus am Jitter des Taktsignals. Und Takte mit einer Pulsdauer kleiner 2ms sind nicht drinne, da LV ja intern mit 1ms Schritten rechnet.
Also Windows und Echtzeitanforderungen sind nur sehr begrenzt kompatibel. (Für sehr kleine werte von kompatibel)
Das ist alles richtig.
Jetzt nimmst du eine Karte von AddiData, konfigurierst die mit asynchronem 2ms-Interrupt und machst alles in Ring0. Dann kannst du mit 2ms ausgeben und solange auf der Maus herumschlagen wie du willst - da ist kein Jitter auf dem Taktsignal (auch nicht beim CD brennen, beim Internetspielen oder Daten übers netzwerk kopieren). Im übrigen hast du im Ring 0 Zugriff sowohl auf den Speicher der Applikation also auch auf die IOs des Prozessors.
Und jetzt mach mir nur keiner weis, dass NI-Karten das nicht können. (Ich glaube eher, NI will nur nicht.)
Nun gut, dann sei Echtzeit etwas relativiert. Echtzeit ist: Wenn ich will, dass meine Daten alle 2ms gesampled oder refreshed werden sollen, dann muss dieses 2ms-Raster wiederholbar nachgewiesen werden können - also z.B. durch eine Messung eines entsprechenden Signales. Dieses Signal darf vielleicht um 10% jittern, aber niemals um 50% oder gar Aussetzer von bis zu mehrerer (zig) Takten haben. Das selbe gilt für 200ms-Raster (dann ist möglicherweise die "Echtzeit" auch unter LV mit Frantpanel gegeben) oder für 50µs-Raster (20kHz).
Im Prinzip gilt der "Echtzeit"-Nachweis auch für die (wohl garantiert 20kHz-"Echtzeitfähige") Karte 5401. Was nützt einem diese Karte alleine, wenn dann z.B. der übergeordnete Regelalgorithmus wegen zu großer Laufzeit in LV so langsam ist, dass der Shaker in Endstellung knallt. Hier gehört dann z.B. eine FPGA-Karte her oder gleich ein Echtzeitsystem.
[*OnTopic*]
Ich weis von einem ähnlichen Projekt, bondiol, bei dem derartige Echtzeit-Nachweismessungen gemacht wurden. In Standard-LV sollen da tatsächlich nur 50Hz - in Worten fünfzig Hertz - im Gegensatz zu 300Hz im Max möglich gewesen sein.
ok.... dann kann man da wohl nix machen. ich schätze mal dann kann ich das mit dem messen der 20khz auch vergessen oder?
ich hab mir inzwischen einen sinusgenerator organisiert der sich über den pc befehle geben lässt. mal schaun ob man damit eine art regelung aufbauen kann.
gruß
daniel
' schrieb:ok.... dann kann man da wohl nix machen.
Bei Ausgeben des Signals: Ja.
Zitat:ich schätze mal dann kann ich das mit dem messen der 20khz auch vergessen oder?
Beim Lesen eines Signals: Nicht unbedingt. Eine Lesetask kannst du so einstellen, dass sie kontinuierlich im Hintergrund sampled, möglicherweise auch einen 20kHz-Sinus. Für diese Samples kannst du einen Puffer von (möglicherweise) 500ms konfigurieren. Diesen Puffer liest du z.B. alle 100ms (oder so schnell es eben geht) aus. Im Lese-VI gibt es da eine Option "Hole, was da ist". (Eigentlich dachte ich, dass dieses Verfahren auch für Schreiben geht).
' schrieb:leider konnte ich keinen daqmx-konfigurator finden - wo finde ich den?
Das meinte ich:
"Measurement & Automation Explorer", kurz MAX. Zu finden als NIMax.exe unter Programme -> National Instruments -> Max