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 

Probleme beim Zusammensetzen eines Arrays



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!

09.08.2016, 15:19 (Dieser Beitrag wurde zuletzt bearbeitet: 09.08.2016 15:21 von Hasenfuss.)
Beitrag #1

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



Probleme beim Zusammensetzen eines Arrays
    Hi,

ich habe ein Problem beim Zusammensetzen eines Arrays. Ich erzeuge einen Sinus in einem Array und schreibe ihn in einen selbstgebastelten Fifo rein, der als Anzeige für einen Graphen dient. Der Sinus wird nicht richtig zusammengesetzt (siehe Schaubild).

Das Programm besteht aus einer FGV, die als Anzeige-FIFO (variant_data_container_4FGV.vi) dient und einem Testprogramm (test.vi) sowie noch einigen CTL-Dateien für das Fifo-VI. Die Anzeige-FIFO-FGV hat zwei Befehle, um Daten anzuhängen - "write forward" und "write backward". Die Funktion "write backward" funktioniert, aber nicht die Funktion "write forward". Leider weis ich überhaupt nicht, was ich beim Programmieren der Funktion falsch gemacht habe.

Falls ihr Euch meine VIs einmal anschauen würdet und mir Hinweise auf eine Fehlerursache geben könntet, würde ich mich sehr darüber freuen.
Hier der letzte Anhang bzw. die 5 Einzelprogramme nochmal gezippt in einem Ordner.


Angehängte Datei(en)
14.0 .vi  test.vi (Größe: 21,93 KB / Downloads: 217)

14.0 .ctl  Variant_Container_AlsDatenspeicherfifoBefehle.ctl (Größe: 4,29 KB / Downloads: 185)

14.0 .ctl  Variant_ContainerV4_DatensatzArrayCTL.ctl (Größe: 5,94 KB / Downloads: 212)

14.0 .ctl  Variant_ContainerV4_DatensatzCTL.ctl (Größe: 8,44 KB / Downloads: 202)

14.0 .vi  variant_data_container_4FGV.vi (Größe: 38,33 KB / Downloads: 231)

0.0 .zip  testprogramm.zip (Größe: 60,22 KB / Downloads: 185)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.08.2016, 22:04 (Dieser Beitrag wurde zuletzt bearbeitet: 09.08.2016 22:13 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.424
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Probleme beim Zusammensetzen eines Arrays
Hallo Hasenfuss,

Zitat:Der Sinus wird nicht richtig zusammengesetzt (siehe Schaubild).
Probiere doch mal, die Daten beim Einfügen innerhalb der FGV umzudrehen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2016, 10:43 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2016 10:45 von Hasenfuss.)
Beitrag #3

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Probleme beim Zusammensetzen eines Arrays
Hallo GerdW,

das mit dem Umdrehen hab ich schon probiert. Leider führt es zu keinem brauchbaren Resultat. Der Sinus wird zwar richtig dargestellt, aber nicht die steigende Rampe. Im Bild 1 wird gezeigt, dass parallel zum Sinus auch die Rampe erzeugt wird. Die Rampe wird richtig dargestellt, aber nicht der Sinus. Mache ich wie von Dir vorgeschlagen die Daten umdrehen, dann bekomme ich keine steigende Rampe angezeigt, sondern eine fallende Rampe.


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.08.2016, 22:28 (Dieser Beitrag wurde zuletzt bearbeitet: 10.08.2016 22:28 von IchSelbst.)
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Probleme beim Zusammensetzen eines Arrays
Um was geht es? Um den Sinus, der aussieht, als ob Daten fehlten?

Wenn Ja:
Warum denn mit dem Element "Teilarray ersetzen" Daten anhängen? Warum nicht mit "Array erstellen"?


Angehängte Datei(en) Thumbnail(s)
   

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2016, 11:27
Beitrag #5

MaddinMaddinsen Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Aug 2016

2014
2012
DE



RE: Probleme beim Zusammensetzen eines Arrays
Moin Hasenfuss,

die Programmierung ist vollkommen ok. Was du aber nicht bedacht hast ist, dass wenn du eine gleitkomma Frequenz verwendest, ist deine Periodendauer ungleich 2 PI. Wenn du jetzt mit deiner Rampe von 1000 Samples arbeitest schneidest du die Welle einfach irgendwo ab und setzt dieses Signalfragment an den Anfang (FiFo) und ein neues sinus Signal wird erstellt und fängt, wenn du es nicht mit "signal zurücksetzten" kennzeichnest, an der letzten bekannte Phase wieder an und setzt dann dieses wieder an die erste Stelle. Dadurch kommt es zu diesen Sprüngen und man kann sogar die Phasenverschiebung als weitere Frequnz beobachten.

Mein Ansatz ist:
1. Wenn du deine Rampe in Abhängigkeit deiner Frequenz skalierst endet dein Signal bei Periodendauer von 2PI und du kannst es in dein FiFo packen. (siehe Abb.1)
2. Du solltest bei deinem "Teil Array setzen" sagen an welcher Stelle etwas ersetzt werden sollte, also den index 0 angeben. (siehe Abb.2)

Ich hab es bei mir ausprobiert und es funktionierte. Ich bin nicht sicher ob deine Rampe immer 1000 sein muss und ich ich dein Programm jetzt verpfuscht habe, aber vlt. ist es ein Ansatz für dich Smile


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2016, 12:56 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2016 13:03 von Hasenfuss.)
Beitrag #6

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Probleme beim Zusammensetzen eines Arrays
(10.08.2016 22:28 )IchSelbst schrieb:  Wenn Ja:
Warum denn mit dem Element "Teilarray ersetzen" Daten anhängen? Warum nicht mit "Array erstellen"?

Hi,

ein neues Array erstellen würde bedeuten, dass neue Operationen im Speicher stattfinden, also neue Speicherbereiche allokieren, die alten freigeben. Aus früheren Beiträgen von vielen Usern hier drinnen habe ich gelernt, dass man ein Array am besten mit fester Länge definiert und dann Arrayrotationen oder Ersetzungen vornimmt, jedoch neue Arrays erstellen vermeiden soll.

@ Maddin Maddsen
Zitat:2. Du solltest bei deinem "Teil Array setzen" sagen an welcher Stelle etwas ersetzt werden sollte, also den index 0 angeben. (siehe Abb.2)

Wenn ich nichts dranschreibe, dann ist standardmässig der Index 0 gemeint, ich hatte auch schon eine definierte Null angehängt, es hatte aber keinen Unterschied gemacht.

Dass der Sinus nicht definiert endet und startet - da hast du recht. Ich bekomme aber von einer Messerfassungskarte einen konstanten Sinus, den ich aus einem Fifo auslese. Der Fifo ist ausreichend groß dimensioniert, so dass ein Überlauf ausgeschlossen werden kann. Dennoch werden die Daten bei der Fkt. write forward falsch eingefügt, bei write backward jedoch richtig, es sieht so aus, als ob die Funktion an irgendwelchen Stellen etwas abschneidet.

In den angehängten Bildern sind nochmal beide Funktionen zu sehen - jetzt nicht über den erzeugten Sinustest, sondern richtig über die Messerfassungshardware und bei der Funktion "write forward" kommt nicht sinvolles bei heraus. Nicht mal die Rampe wird richtig dargestellt.


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.08.2016, 13:12
Beitrag #7

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Probleme beim Zusammensetzen eines Arrays
Jetzt hab ich bei der Funktion "write forward" nochmal eine Arraydrehung vorgenommen mit der Funktion 1D-Array umkehren (siehe angehängtes Bild linke Seite mit Kringel). Der Sinus sieht so nun sehenswert aus, nicht mehr zerhackt. Aber die Rampe ist falsch. Es ist nun eine fallende Rampe und keine steigende Rampe, obwohl die Werte von 0-4000 hochgezählt werden und nicht von 4000-0 herabgezählt werden sollen, wie in der rechten Seite zu sehen ist.

Aus irgendeinem Grund wird das Array in der Funktion "write forward" nicht richtig in den Fifo hineingesetzt. Woran könnte das liegen?


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2016, 13:29
Beitrag #8

MaddinMaddinsen Offline
LVF-Neueinsteiger


Beiträge: 6
Registriert seit: Aug 2016

2014
2012
DE



RE: Probleme beim Zusammensetzen eines Arrays
Moin Hasenfuss,

du drehst durch die Indizierung an der for-Schleife beide Spalten deines 2D Arrays um. Dadurch dreht sich dein Sinus als auch deine Rampe. Wenn du wie in Abb.1 die Rampe aus der Drehung entfernst, sieht beides schön aus.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2016, 15:57
Beitrag #9

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Probleme beim Zusammensetzen eines Arrays
(11.08.2016 13:29 )MaddinMaddinsen schrieb:  Moin Hasenfuss,

du drehst durch die Indizierung an der for-Schleife beide Spalten deines 2D Arrays um. Dadurch dreht sich dein Sinus als auch deine Rampe. Wenn du wie in Abb.1 die Rampe aus der Drehung entfernst, sieht beides schön aus.

Hmm, ok, was soll ich dazu sagen. Sicherlich sieht der Sinus dann "schön" aus, aber von einem schönen Aussehen habe ich nicht so viel. Der Sinus ist bei der Drehung dann um 90 Grad phasenverschoben. Natürlich könnte ich jetzt eine Korrekturfunktion einbauen, die den Sinus dann wieder richtig schiebt...

Und was ist, wenn sich die Signalreihenfolge mal ändert und ich anders herum die Signale in meine Anzeige einpräge? Dann müsste ich auch die Drehung umkehren. Das kann aber nicht sein. Es muss beim Einfügen des Arrays ein genereller Fehler in dem von mir entworfenen Programm vorliegen, den ich bis dato noch nicht gefunden habe.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2016, 16:50 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2016 16:52 von IchSelbst.)
Beitrag #10

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Probleme beim Zusammensetzen eines Arrays
(11.08.2016 12:56 )Hasenfuss schrieb:  ein neues Array erstellen würde bedeuten, dass neue Operationen im Speicher stattfinden, also neue Speicherbereiche allokieren, die alten freigeben. Aus früheren Beiträgen von vielen Usern hier drinnen habe ich gelernt, dass man ein Array am besten mit fester Länge definiert und dann Arrayrotationen oder Ersetzungen vornimmt, jedoch neue Arrays erstellen vermeiden soll.
Du hast zwar Recht, aber das hindert dich nicht daran es trotzdem auszuprobieren. Das Ergebnis der Probe lässt ggf. Rückschlüsse zu, warum es mit "Teilarray ersetzen" nicht geht.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
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
  Array richtig zusammensetzen für den Graphen Pow 2 4.087 08.06.2016 13:04
Letzter Beitrag: Pow
  Probleme beim Messen der Periodendauer mit Hilfe des "Pulse Measurements.vi" stud_bay 7 6.266 14.08.2012 10:41
Letzter Beitrag: GerdW
  Probleme beim Arbeiten mit Waveforms - bitte um dringende Hilfe Lydia 4 4.066 16.12.2011 10:43
Letzter Beitrag: Lydia
  Von einzelnen 1D x-, y-, z-Arrays nach 2D X-, Y-, Z-"Grid" Arrays? bastian79 6 5.908 22.08.2009 12:07
Letzter Beitrag: schrotti
  Teilweise Anzeige eines 2D-Arrays jewi 12 8.548 18.12.2008 07:28
Letzter Beitrag: jewi
  Probleme bei der Einstellung eines Graphen nokiabasti 8 6.801 21.11.2008 13:31
Letzter Beitrag: Don

Gehe zu: