Problem mit Sinus-Signal-Erstellung - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Signaldarstellung (/Forum-Signaldarstellung) +---- Thema: Problem mit Sinus-Signal-Erstellung (/Thread-Problem-mit-Sinus-Signal-Erstellung) |
Problem mit Sinus-Signal-Erstellung - Leo1 - 07.11.2011 17:04 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 RE: Problem mit Sinus-Signal-Erstellung - jg - 09.11.2011 23:05 (07.11.2011 17:04 )Leo1 schrieb: 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?Ja logisch ist das schlecht. Wenn du dir ein "Riesen-Array" erzeugst, dann muss das ja erst einmal im RAM gehalten werden. Was hatten wir für Vorgaben..., dt=0,01s, somit ist 1h = 3600 s = 360.000 Samples. Belegt bei DBL ca. 3 MB. Das kannst du jetzt auf deinen Featurewunsch Tage hochrechnen: 1 Tag ist dann ein ca. 66 MB großes Array, etc. pp. (07.11.2011 17:04 )Leo1 schrieb: 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!).Verstehe ich jetzt nicht. Wenn du die Pt-To-Pt Funktion gefunden hast, die macht doch genau das, was du willst. Sie erzeugt dir genau den 1 neuen Wert, den du zum aktuellen Zeitpunkt brauchst. Wo ist da jetzt das Problem? Ansonsten, bitte mal VI hochladen. Gruß, Jens |