LabVIEWForum.de - mehrdimensionales Array verarbeiten

LabVIEWForum.de

Normale Version: mehrdimensionales Array verarbeiten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Hasenfuss,

digitale Signale, soweit ich sie in meinen Programmen nutze (Relais, Enable-Buttons, etc.), sind für mich "nur" analoge Signale, die nur die Werte 0 und 1 annehmen...
Ich habe mein Problem jetzt so gelöst, dass ich den Vorschlag von GerdW benutzt habe und nur ein 1D-Array als Speicher verwende. Dass 1D-Array wird dann für die Anzeige umgewandelt. Vielleicht kann von Euch auch jemand was mit dieser Variante anfangen, darum stell ich sie mal hier hinein.

Nochmal vielen Dank für Eure vielen Tipps und Hinweise, allein hätt ich das so nicht hinbekommen.
(03.09.2013 19:32 )Hasenfuss schrieb: [ -> ]... Vielleicht kann von Euch auch jemand was mit dieser Variante anfangen, darum stell ich sie mal hier hinein. ...

In der Version 2012 wird das nicht allzu vielen nützlich sein.

Gruß, Marko
[attachment=46150][attachment=46151]

Gruß Markus

(04.09.2013 07:23 )Trinitatis schrieb: [ -> ]In der Version 2012 wird das nicht allzu vielen nützlich sein.
Hallo Hasenfuss,

bist du dir bei den ganzen (roten!) CoercionDots wirklich sicher bei dem, was dir dein VI ausspuckt?

Wozu gibt dein subVI die Daten als DBL aus, wenn sie intern als I32 gespeichert werden?
Warum speichert dein subVI die Daten intern als I32, wenn sie eigentlich als DBL berechnet werden?
Warum werden Wertvorgaben für #Iterationen als DBL angelegt, wenn hier I32 verwendet werden sollte?
Du hast nirgends den Aufräumknopf benutzt...
Es gibt eine Negierfunktion, da muss man nicht mit "-1" (DBL!) multiplizieren, um ein I32 zu verrechnen. Rube-Goldberg...
Wozu werden Drähte durch eine Case-Struktur gezogen, die in dieser Struktur nicht verändert werden (im HauptVI)? Rube-Goldberg...
Hallo GerdW,

vielen Dank, dass Du Dir den Programmentwurf angeschaut hast und mir einige Fragen zu Punkten stellst, über die ich mir bisher noch keine Gedanken gemacht habe, so habe ich nun die Chance, Fehler zu beseitigen und noch was dazuzulernen.

Hallo Marko,

Du schriebst "In der Version 2012 wird das nicht allzu vielen nützlich sein."

danke, dass Du mich darauf aufmerksam gemacht hast. Ich habe beim Abspeichern "für vorige Version speichern ..." gewählt, muss aber beim Hochladen doch wieder die falschen Dateien genommen haben, eigentl. sollten sie in der Version 2010 abgespeichert werden.

Auch danke an Euch anderen, die ihr das Programm in der LV08-Version abgespeichert habt für mich.

>GerdW schrieb:
>Wozu gibt dein subVI die Daten als DBL aus, wenn sie intern als I32 gespeichert werden?
>Warum speichert dein subVI die Daten intern als I32, wenn sie eigentlich als DBL berechnet werden?
>Warum werden Wertvorgaben für #Iterationen als DBL angelegt, wenn hier I32 verwendet werden sollte?

Das sind Fehler, auf die ich noch nicht geachtet habe und die ich beseitigen muss, danke für den Hinweis.

> Du hast nirgends den Aufräumknopf benutzt...

Ich mag den Aufräumknopf oft nicht. Ich weis nicht, ob beim Insnetzstellen sich mein Blockdiagramm verändert hat. Das Bild ohneAufräumknopf.JPG zeigt das Blockdiagramm im "unaufgeräumten" Zustand, ich finde es so übersichtlicher. Nach dem Aufräumknopf kommt das heraus, was man in Bild nachAufräumknopf.JPG sieht. Wie sah das Blockdiagramm bei Dir aus?

> Wozu werden Drähte durch eine Case-Struktur gezogen, die in dieser Struktur nicht verändert werden (im HauptVI)? Rube-Goldberg...

Hoffentlich bekomme ich jetzt keine Schläge, hmm, ich habe es aus "optischen" Gründen gemacht. Ich wollte, dass die Schieberegister durch eine gerade Linie miteinander verbunden sind, um das alles übersichtlich zu halten. Aber ich habe glaube ich vergessen, dass bei jedem Übergabepunkt ein weiteres Speicherabbild erzeugt wird und das Programm so ineffizient wird, vielleicht ist das einer der Nachteile der grafischen Programmierung.

> Es gibt eine Negierfunktion, da muss man nicht mit "-1" (DBL!) multiplizieren, um ein I32 zu verrechnen

Die Negierfunktion habe ich bisher noch nie verwendet, da ich sie nicht kannte, jetzt kenne ich sie und werde sie zukünftig verwenden, vielen Dank :-)

> Rube Goldberg

Ich habe mal bei Wikipedia geschaut, wer das gewesen ist, ein Cartoonist und Ingenieur.
(04.09.2013 10:09 )Hasenfuss schrieb: [ -> ]> Rube Goldberg
Ich habe mal bei Wikipedia geschaut, wer das gewesen ist, ein Cartoonist und Ingenieur.


Sein wohl bekanntester Comic aber wurde derjenige um Professor Lucifer Gorgonzola Butts, in dem immer wieder absurd komplizierte Apparaturen zur Bewerkstelligung simpelster Aufgaben dargestellt wurden, wodurch der Name Rube Goldberg bzw. der Begriff der Rube Goldberg machine (Rube-Goldberg-Maschine im Deutschen) sprichwörtlich für unnötig komplizierte technische Lösungen wurde.

Quelle: Wikipedia




Gruß, Marko
(04.09.2013 10:09 )Hasenfuss schrieb: [ -> ]Hoffentlich bekomme ich jetzt keine Schläge, hmm, ich habe es aus "optischen" Gründen gemacht. Ich wollte, dass die Schieberegister durch eine gerade Linie miteinander verbunden sind, um das alles übersichtlich zu halten. Aber ich habe glaube ich vergessen, dass bei jedem Übergabepunkt ein weiteres Speicherabbild erzeugt wird und das Programm so ineffizient wird, vielleicht ist das einer der Nachteile der grafischen Programmierung.
An diesem Punkt kann ich dich beruhigen, beim Hereinführen in eine Case-Struktur wird üblicherweise keine Speicherkopie erzeugt.
Der LabVIEW-Compiler ist seit Lv10 auch deutlich schlauer geworden und wird deine durch alle Cases durchgezogenen Drähte wegoptimieren.

Gruß, Jens
(04.09.2013 07:46 )GerdW schrieb: [ -> ]Hallo Hasenfuss,

bist du dir bei den ganzen (roten!) CoercionDots wirklich sicher bei dem, was dir dein VI ausspuckt?

Was meinst Du denn damit? Also, die Funktion zur Signalsimulierung liefert mir abwechselnd einen Sinus und eine Rampe (gerade/ungerade), weil ich unterschiedliche Signale haben wollte. Mein Signal, was ich erzeugen muss, muss so aussehen:

z.B. 3 Kanäle

Kanal1[Wert1], Kanal2[Wert1], Kanal3[Wert1], Kanal1[Wert2], Kanal2[Wert2], Kanal3[Wert2], Kanal1[Wert3], Kanal2[Wert3], Kanal3[Wert3],

So bekomme ich später die Signale von der Messerfassungshardware angeliefert, also ein 1D-sequentieller Datenstrom und ich habe versucht, das so als Signal zu simulieren, so dass ich ohne die Hardware Versuche machen kann. Die Anzahl der Werte kann zwar variieren, es ist aber von der Hardware sichergestellt, dass die übertragenen Werte immer ein Vielfaches von AnzahlKanäle sind. Ich habe mir das 1D-Array angeschaut und bin bisher sicher gewesen, dass ich es so richtig simuliert habe.

Im übergeordneten VI (Testprogramm2.VI) sind zwei Graphen, wobei der erste Graph (gemischt) nicht zu gebrauchen ist, sondern mir Anzeige dienen sollte. Im Graph (entmischt) sehe ich dann die einzelnen Kanäle.


Die Bilder 10Kanäle.JPG und 10Kanälegezoomt.JPG zeigen einen Versuch mit 10 Kanälen. Beim Hineinzoomen erkenne ich deutlich 5 Sinus-Signale und 5 steigende Rampen, so dachte ich, dass es funktioniert.

Wo meinst Du, könnte ein evtl. Fehler sein, weil Du mich fragtest, ob ich sicher sei, bei dem, was das VI ausgäbe?
Hallo Hasenfuss,

CoercionDots beziehen sich auf Datentyp-Wandlungen, die der Compiler für dich vornimmt: nicht immer ist das Ergebnis das erwartete...

Du rechnest im subVI mit Integer, die du hinterher auf DBL aufpustest. Vielleicht reicht dir ja die Integer-Auflösung aus, vielleicht stellst du aber auch fest, dass dir Nachkommastellen fehlen...
Seiten: 1 2
Referenz-URLs