LabVIEWForum.de - n/10 - Dimensionales Array, xy Graphen und Hystheresen.

LabVIEWForum.de

Normale Version: n/10 - Dimensionales Array, xy Graphen und Hystheresen.
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

bestimmt denken sich die Profis hier,....nicht schon wieder!!??!!Anniespam

jedoch habe ich leider keine Wirklich akzeptable Lösung meines Problems finden können.

Es geht darum, das ich ein 11-Dimensionales Array of Double über meine Network-Shared-Variable an den Host bekomme.
(Ich habe das Problem in einem Vi. symbolisch nachgestellt, da das Problem lediglich auf der Host Seite besteht.)

Ein Element/10ms.

Ich möchte nun dieses einzelnen Array Elemente "verbinden" und eine Art Signal generieren.

Sprich ich habe 11 verschiedene Signale über meine network-shared-variable erhalten.

Diese möchte ich nun in xy-Graphen beliebig übereinander anzeigbar machen.
(Das an sich sollte nicht das Problem sein, da lediglich 2-enumCases dazu nötig sind, welche die passenden Kanäle an den XY Graphen durchschaltet)

Ich frage mich nur wie ich die Daten zwischenspeichern kann ?!?! bzw. passend aneinandergereiht die Double Werte an den Graph gebe ??
Es soll jedoch nicht nur einmal x1-y1 geplottet werden, sondern solange wie man möchte belibige x-y-Kombinationen auf dem Graph sichtbar gemachgt werden.

sorry für die dumme Frage Construction

Danke für eure Anregungen.
Bitte verwende die richtigen Begriffe! Ein 1-dimensionales-Array mit 11 Elementen ist kein 11-dimensionales Array - das wäre ein schlimmer Datenwust! Oder war das ein Tipp-Fehler?

Gruß, Jens
Hallo akoKE,

dein VI ist bei mir leider nicht ausführbar, da deine Enums keine Werte enthalten.

Du schreibst:
Zitat:Sprich ich habe 11 verschiedene Signale über meine network-shared-variable erhalten.

Für mich sieht es auch so aus, als ob du lediglich 11 Werte in einem 1D-Array vor dir hast. Diese willst du nun in eineem X/Y-Plot darstellen. (Korrigiere mich, wenn ich zu einfach denke)

Dann schreibst du:
Zitat:Diese möchte ich nun in xy-Graphen beliebig übereinander anzeigbar machen.

Im Grunde kannst du dir für jeden dieser 11 Werte einen passenden X-Wert ausdenken und diese Werte dann darstellen, oder anders herum.

Und dann:
Zitat:Es soll jedoch nicht nur einmal x1-y1 geplottet werden, sondern solange wie man möchte belibige x-y-Kombinationen auf dem Graph sichtbar gemacht werden.

Du kannst dir für jeden beliebigen Wert deines Arrays einen korrespondierenden Abszissen- oder Ordinatenwert erdenken und dieses Paar im X/Y-Graph dann darstellen. Die Darstellung im X/Y-Graph ist hinreichend in LV-Beispielen erklärt.



Was genau ist dein Problem bei der Darstellung



Gruß, Marko
Danke erst einmal für die vielen Antworten !!

1. Ja da habe ich in der eile mich falsch ausgedrückt. 1-Dim.Array, mit 11 Werten.
Jeder index stellt einen Wert der Signalkette dar. (Verbunden sollte das der Verlauf von einem Signal.x sein)

2. Das Problem ist, dass ich mir nicht sicher bin ob meine Signale richtig erstellt werden.
Habe dies bezüglich zu wenig Erfahrung.

Im Anhang habe ich nun doch mein Host.vi mal reingestellt.( Achtung nicht ausführbar)

Mein Gedankengang:
1. Meine Timed-Loop-Schleife bekommt alle 10 ms, einmal ein 1-Dim. Array mit jeweils 11 Werten
2. Indiziere die Signale zurück -> erstelle aus den einzelnen DBL Werten ein Array -> ein Signal
3. übergebe das Signal am ende der Timed-Loop-Schleife an die nächste Sequenz weiter.

Problem:
Ich glaube nicht das das Signal wirklich richtig an meine letze Sequenz ankommt.
Kann es sein, dass die Signalerzeugung nur ein Signal erstellt. Und zwar aus der letzen iteration der Timed-Loop-Schleife.
Man also am ende ein Signal der länge 1 bekommt ??
Hallo ako,

Zitat:1. Meine Timed-Loop-Schleife bekommt alle 10 ms, einmal ein 1-Dim. Array mit jeweils 11 Werten
2. Indiziere die Signale zurück -> erstelle aus den einzelnen DBL Werten ein Array -> ein Signal
3. übergebe das Signal am ende der Timed-Loop-Schleife an die nächste Sequenz weiter.
1) Ja das passt noch.
2) Hier beginnen die Probleme. Warum der unsinnige Einsatz von ExpressVIs?
3) Weitere Probleme... Wann wird deine Schleife denn verlassen? THINK DATAFLOW!

Zitat:Problem:
Ich glaube nicht das das Signal wirklich richtig an meine letze Sequenz ankommt.
Kann es sein, dass die Signalerzeugung nur ein Signal erstellt. Und zwar aus der letzen iteration der Timed-Loop-Schleife.
Man also am ende ein Signal der länge 1 bekommt ??
Ja, das kann so sein. So hast du es jedenfalls programmiert...

Was der letzte Frame mit dem Aufsplitten der Signale tun soll, ist mir schleierhaft. Du wandelst ein Array mit Werten in DDT um und dieses wird dann einmal in 3 Signale aufgesplittet und ein andermal in nur 2 Signale. Das verstehe, wer will...
Hallo akoKE,

bisschen konfusi - das ganze.

Du nimmst dein 1D-Array und zerlegst es wieder in seine Einzelwerte, von denen du jeden wieder zu einem Array mit genau diesem einen Wert machst. Daraus machst du dann ein Signal und bündelst alle Signale, die eigentlich nur Signalanteile sind.

Das kommt mir reichlich overprogrammed vor.

Warum nimmst du nicht dein Array, das Signal und baust dir dazu ein passendes Korrespondenzarray für die Abszissen-/ Ordinatenwerte - je nachdem, wie du es darstellen willst. Und dann rein in den X/Y-Graph


Gruß, Marko
hier nur mal so prinzipiell die Möglichkeit der X/Y-Darstellung
(29.01.2013 15:10 )GerdW schrieb: [ -> ]Hallo ako,


1) Ja das passt noch.
2) Hier beginnen die Probleme. Warum der unsinnige Einsatz von ExpressVIs?
3) Weitere Probleme... Wann wird deine Schleife denn verlassen? THINK DATAFLOW!

....

Was der letzte Frame mit dem Aufsplitten der Signale tun soll, ist mir schleierhaft. Du wandelst ein Array mit Werten in DDT um und dieses wird dann einmal in 3 Signale aufgesplittet und ein andermal in nur 2 Signale. Das verstehe, wer will...


Danke erstmal.

1. Express Vi.s weil es damit einfach gerade am schnellsten geht.
2. Das End-Ziel ist ein bisschen Komplexer, und ich Test das System zunächst anhand weniger Signale.

Ziel des Splittings ist, dem Benutzer eine Auswahl an X-Y Darstellungen zu ermöglichen.

Mein Messprogramm durchläuft 5 verschiedene Messzyklen, und liefert über die Network-shared-Variable 10 Signale zurück.
In der Mittleren Sequenz sollen lediglich die 10 verschiedenen DBL Werte zu bündigen Signalen zusammengefasst werden.
In der letzen Sequenz, sollen die Daten dann dem Benutzer zur Analyse bereit stehen.

Ps. Ich Signal 1, enthällt exportiert zu Excel doch mehr als ein Element. Daher das Signal doch richtig erstellt.
Leider entspricht Signal1 (aus der mittleren Sequenz) nicht dem Signal1 (der letzen Sequenz)


Grüße
(29.01.2013 15:11 )Trinitatis schrieb: [ -> ]Hallo akoKE,

bisschen konfusi - das ganze.

Du nimmst dein 1D-Array und zerlegst es wieder in seine Einzelwerte, von denen du jeden wieder zu einem Array mit genau diesem einen Wert machst. Daraus machst du dann ein Signal und bündelst alle Signale, die eigentlich nur Signalanteile sind.

Das kommt mir reichlich overprogrammed vor.

Warum nimmst du nicht dein Array, das Signal und baust dir dazu ein passendes Korrespondenzarray für die Abszissen-/ Ordinatenwerte - je nachdem, wie du es darstellen willst. Und dann rein in den X/Y-Graph


Gruß, Marko
hier nur mal so prinzipiell die Möglichkeit der X/Y-Darstellung

Hallo Trinitatis,

Danke dir erstmal.

Das 1D-Array besteht aus z.B. 10 Einzelwerten.
Davon ist,
Wert1 - eine Zuordnung zu welchem Messyklus die Werte gehören
Wert2 - der erste Wert von Signal 1
Wert3 - der erste Wert von Signal 2
Wert4 - der ertse Wert von Signal 3
usw.

Diese Signale fasse ich zusammen zu den "richtigen" Signalen 1, 2, 3,....10,

Lediglich dieses soll in Sequenz eins ablaufen.

Grüße
Du nimmst aus deinem Array ein Element und machst aus diesem wieder ein Array (und daraus dann ein Signal - das wird dann wohl ein Element haben.

Warum lässt du deine Auswahlschleife nicht parallel zur Dateneinsammelschleife laufen?


Gruß, Marko
Hallo ako,

Zitat:1. Express Vi.s weil es damit einfach gerade am schnellsten geht.
Schneller <> Besser/verständlicher/begreifbarer...
Zitat:2. Das End-Ziel ist ein bisschen Komplexer, und ich Test das System zunächst anhand weniger Signale.
Gerade dann solltest du dir erstmal über die zu verwendenden Datentypen klar werden!

Zitat:Das 1D-Array besteht aus z.B. 10 Einzelwerten.
Davon ist,
Wert1 - eine Zuordnung zu welchem Messyklus die Werte gehören
Wert2 - der erste Wert von Signal 1
Wert3 - der erste Wert von Signal 2
Wert4 - der ertse Wert von Signal 3
usw.
Du willst also ein 1D-array mit den Angaben zu den Messzyklen und ein 2D-Array mit den Werten deiner 10 Signalverläufe erhalten?
Schau mal ins Attachment, dies gibt eine Idee, wie man ohne ExpressVI (oder besser gesagt: ohne undurchsichtige DDT-Drähte) auskommen könnte...
Hi,

Danke GerdW für deine Programmierung.
Sehr interessanter Ansatz, das mit den Enums an den Index-Eingängen.

leider hindern mich zwei Sachen daran mit den Array od DBL weiter zu arbeiten.

1. Unabhängig von den Messreihen, soll der Benutzer zu jeder Messreihe die Daten analysieren können.
(Bsp. Messreihe 1-5, die XY Plots der 10 Signale auswählen können) Deshalb habe ich den Ansatz mit den Eigenschaftsknoten gewählt. (Dies wird oft in verschiedenen Threads hier diskutiert.)
Sonst müssten ja jeweils immer die "Drähte" am Ausgang verbunden werden.

2. Sind mir diese 2D-Array nicht ganz geläufig. Du sagtest ja, 10 Signale in einem 2D-Array darstellen.....BlinkBlink
Werde mir aber jetzt nochmals genauer dieses Thema annehmen Wink

Hoffe das kapiere ich schnell =))

@Trinitatis,
Danke auch dir.

Das habe ich ja versucht. Abhängig von Index0 Element, wird ein Graph mit allen 10 Signalen erzeugt, der dann später die Daten (über den Eigenschaftsknoten) in Sequenz 3 zur Verfügung stellt.

Letze Bemerkung noch vllt.... Natürlich würde ich am liebsten ohne Express Vi,s auskommen. Habe dies ja auch auf dem cRio so machen müssen Wink)
Jedoch bin ich ein wenig Happy, auf dem Host "etwas" mehr Rechenleistung zu haben ;P
Seiten: 1 2
Referenz-URLs