INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Problem mit Sinus-Signal-Erstellung



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!

07.11.2011, 17:04
Beitrag #1

Leo1 Offline
LVF-Grünschnabel
*


Beiträge: 30
Registriert seit: Feb 2011

2011
2012
DE


Deutschland
Problem mit Sinus-Signal-Erstellung
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

Lv10
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2011, 23:05
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Problem mit Sinus-Signal-Erstellung
(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

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Sinus Sweep janso 5 5.596 15.10.2020 18:34
Letzter Beitrag: Martin.Henz
  Werten einen Sinus überlagern sarah_gru 1 2.941 09.09.2019 12:34
Letzter Beitrag: HVo
  Erfasstes Signal mit simulierten Signal vergleichen funktioniert nicht wegen Datenty Felifa 14 9.175 21.04.2017 07:46
Letzter Beitrag: Felifa
  Sinus als Grundschwingung + 3. Harmonische digitus 2 5.374 18.05.2015 18:34
Letzter Beitrag: digitus
  analoger Sinus Sweep Output tg_1909 6 7.447 15.05.2015 09:54
Letzter Beitrag: tg_1909
  Sinus-Signal in Array duckVader 3 6.760 08.11.2014 19:42
Letzter Beitrag: Lucki

Gehe zu: