Hallo,
Ich habe folgendes Problem:
Ich habe eine Datei mit z.B. 30 000 Werten und gebe Sie über "AO Write" mit der Update Rate 1000 aus, sodass ich am Ausgang ein 30 Sekunden langes Signal (z.B. einen Sinus mit steigender Frequenz oder Amplitude) bekomme.
Gleichzeitig messe ich das Signal am Eingang und will einen Regelkreis aufbauen. Mein Problem ist nun, das ich nicht weiß, wie ich auf die Daten in meinem Ausgabepuffer zugreifen kann - bzw. Sie verändern kann um Störungen auszuregeln. Ist das überhaupt möglich bei "AO Write" oder ist der Puffer - einmal geschrieben unantastbar?
Gibt es noch andere Möglichkeiten so einen Regler aufzubauen?
Bin für jeden Tipp dankbar.
Mir ist nicht so ganz klar, was du da eigentlich machen willst. Kannst du einmal versuchen das Problem etwas anders zu beschreiben?
Ich versuche mal zu beschreiben, wie ich das im Moment verstehe:
Du gibst eine 30 Sekunden lange Sequenz mit AO Write aus. Dazu schreibst du die komplette Sequenz in den Puffer (den Rest erledigt der DAQ-Treiber). Sind die 30 Sekunden um, dann beginnt die Sequenz von vorne.
Das so erzeugte analoge Signal gibst du auf ein, wie auch immer geartetes, System. Dieses System liefert dir am Ausgang ein analoges Signal, welches du über deine Datenerfassungskarte einliest. Je nachdem, wie hoch das eingelesene Signal ist, möchtest du dein Ausgangssignal anpassen.
Nun zu deiner Frage: Ohne das wirklich 100% sicher beantworten zu können, würde ich vermuten, dass man in dem Puffer nahezu beliegig herumschreiben kann. Die Parameter von "AO Buffer Write.vi" lassen das jedenfalls vermuten.
Ja du hast das Problem verstanden.
Die Frage ist, ob ich noch Zugriff auf mein Pufferarray habe, sobald es einmal gestartet wurde...
Ich starte mein Output aus der Datei und lese dann in einer Whileschleife die Werte wieder ein. Leider weiß ich nicht, was alles in die Schleife mitreinmuß um Zugriff auf das Pufferarray zu bekommen.
Ich habe es auch mit "In Puffer schreiben" probiert, komme aber zu keiner Lösung
Zum Verständniss habe ich das VI angehängt.
Die Daten in der ausgelesenen Datei sind untereinandergeschriebene Floatwerte z.B.
0,1
0,2
0,3
0,1 etc...
Worauf ich meine Aussage stütze, dass beliebig in dem Puffer geschrieben werden kann, ist folgendes:
Wenn du das Diagramm von "AO Write (scaled array).vi" öffnest, dann siehst du dass dort nur das "AO Buffer Write.vi" aufgerufen wird. Wenn du dieses VI genauer betrachtest, dann hat dieses einen Eingang mit dem Namen "alternate data and mode set" (in der deutschen version des NI-DAQ Treibers steht da u.U. etwas deutsches). Wenn man in dem Cluster den Eingang "write mode" auf "relative to start of buffer" stellt und "write offset" auf Null, dann sollte es möglich sei, zu jedem belibigen Zeitpunkt die Daten zu ändern. Ob das tatsächlich geht, das kannst du nur duch lesen der Handbücher oder durch ausprobieren ermitteln. Du müsstest also nur das "AO Buffer Write.vi" in die While-Schleife setzen und damit dann die auszugebenden Daten aktualisieren.
Sollte es keine Rolle spielen, wenn bei der Ausgabe der Daten eine Pause entsteht, dann kannst du alternativ dazu auch einfach die Ausgabe kurz anhalten und mit den neuen Daten neu starten.