Hallo!
Ich hoffe, jemand kann mir bei folgendem Problem helfen, ich brüte nun schon längere Zeit darüber, leider finde ich keine Lösung (bin Anfänger):
Ich habe folgende Aufgabe:
In meinem Programm soll es möglich sein, dass der Benutzer ein Kraft-Sinussignal erstellt. Dazu kann der User folgendes auswählen: Startwert, Endwert, Periodendauer und Dauer des Sinussignals.
z.B. Start=10 Newton; Ende= 50 Newton; Periodendauer=5, Dauer=1000 Sekunden -> Dann soll ein Sinus-Signal erzeugt werden, welches zwischen den "Niveaus" 10 und 50 läuft, und zwar genau 1000 Sekunden lang! Es sollen nun in einer Schleife alle 10ms ein "Sample" bzw. Wert dieses Signals auf ein Gerät geschrieben werden (also brauch ich schon mal 1000x100 Samples).
Momentan wurde es folgendermaßen gelöst: Es gibt eine Labview-Funktion (Signal Generation Point-to-Point oder so ähnlich), welcher ich meine WErte übergebe (Frequenz, Sampleanzahl, Art des Signals->Sinus, Amplitude, Offset, ...). Als Resultat dieser Funktion bekomme ich gleich eine Art "Array" mit allen 100000 Samples des Signals. Dieses Array werte ich dann in einer 10ms-Schleife aus (d.h. ich nehme immer den nächsten Wert des Arrays und schreibe diesen auf das Gerät).
Das Problem ist nun, dass mein Programm extrem langsam wird, wenn man eine sehr hohe Dauer eingibt (z.B. Sinussignal, welches ein paar Tage laufen soll). Könnte es sein, dass es problematisch ist, wenn man so viele Samples hat, bzw. dass das Array zu groß wird. Teilweise hilft es nicht mal, wenn ich mein Programm beende und neu starte, wird hier etwa der Arbeitsspeicher angefüllt?
Gäbe es eine Möglichkeit, dass ich mein Sinussignal auf anderem Wege erstelle, d.h. das nicht gleich ein Array mit den ganzen Werten erstellt wird, sondern dass ich immer die Werte einzeln erzeuge und auf das Gerät schreibe (das wäre eigentlich mein Plan gewesen, leider fand ich dafür keine Lösung!).
Zur Info: Wenn ich ein Sinus-Signal zwischen 10N und 50N haben will, dann soll dieses genau in der Mitte starten (d.h. bei 30N und auch bei 30N wieder enden)
Wäre nett, wenn sich jemand die MÜhe machen würde, meinen überlangen Text zu lesen, und eventuell eine Lösung für mich hätte
danke schon mal im voraus