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 

Datenerfassung / Array / Variable



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!

16.12.2008, 17:54 (Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2008 10:30 von jg.)
Beitrag #1

Gene1984 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Dec 2008

8.5
-
de

44227
Deutschland
Datenerfassung / Array / Variable
Hallo, ich bin LabVIEW-Neuling. Ich habe folgendes Problem:

Ich möchte in Abhängigkeit von 4 Lichtschranken (Digitale Signale), verschiedene Programme starten. Die Signale der Lichtschranken werden über den DAQ-Assistenten digital erfasst und anschließend in einem Digitalen Signalverlaufsgraphen dargestellt. Das klappt ganz gut.


Jetzt möchte ich wie gesagt in Abhängigkeit von den 4 verschiedenen Signalen verschiedene Schleifen starten. Übertrage ich mir dafür am besten die Werte in ein Array oder in einzelne Variablen? Und wie funktioniert das? Anbei habe ich mal eine Datei hinzugefügt, mit der ich die Daten einlese und in einem Graphen darstelle. Wie müsste ich die Signale dann abgreifen / speichern, um wie gesagt in Abhängigkeit von diesen eine oder mehrere Schleifen zu starten?


Vielen Dank
Lv85_img


Angehängte Datei(en)
Sonstige .vi  Test.vi (Größe: 112,41 KB / Downloads: 204)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.12.2008, 19:53
Beitrag #2

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Datenerfassung / Array / Variable
Du kannst das 2D-Array und die daraus resultierenden 1D-Arrays mit der Funktion "Index Array" zerlegen und dann, je nachdem ob Du "T" oder "F" hast, einen Case pro Lichtschranke ausführen.

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.12.2008, 22:54
Beitrag #3

Gene1984 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Dec 2008

8.5
-
de

44227
Deutschland
Datenerfassung / Array / Variable
Hallo, ist das Array dein ein 2-D-Array? Ich dachte eigentlich das es ein 1-D-Array ist.

Das mit der Funktion "Array indizieren" habe ich heute schonmal versucht. Leider wusste ich nicht ob es geklappt hat, weil ich nicht die passende Funktion gefunden hab, die mir den Inhalt des Arrays dargestellt hat.

Wie kann ich ein einzelnes Feld im Array für die Bedingung des Case nutzen? Ich kenne das nur aus der C-Programmierung, das man gezielt sagt, dass das Element in der 1. Spalte/1.Zeile gleich 1 sein soll. Wie spreche ich das in LabVIEW gezielt an?



Danke für die schnellen Antworten. Vielleicht weißt du auch noch ein gutes Buch, indem sowas erklärt steht.


Gruß

Sebastian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.12.2008, 23:10
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Datenerfassung / Array / Variable
' schrieb:Hallo, ist das Array dein ein 2-D-Array? Ich dachte eigentlich das es ein 1-D-Array ist.
Es ist ein 2D-Array: die eine Dimension ist die Anzahl der digitalen Eingänge. Die andere Dimension ist die Anzahl der Samples.

Zitat:Wie kann ich ein einzelnes Feld im Array für die Bedingung des Case nutzen? Ich kenne das nur aus der C-Programmierung, das man gezielt sagt, dass das Element in der 1. Spalte/1.Zeile gleich 1 sein soll. Wie spreche ich das in LabVIEW gezielt an?
Du kannst das Element Array indizieren nach unten aufziehen (wie vieles in LV), sodass zwei Index-Eingänge vorhanden sind. Pro Dimension ein Index-Eingang. Den Ausgang kannst du dann entweder direkt auf eine Case-Sequenz (selektor-Eingang) geben oder sonstwie weiter verarbeiten (z.B. mit = 1).

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
17.12.2008, 09:59
Beitrag #5

Gene1984 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Dec 2008

8.5
-
de

44227
Deutschland
Datenerfassung / Array / Variable
@IchSelbst: Wenn ich das richtig verstanden hab, werden dann alle digitalen Eingänge in eine Dimension geschrieben. Wie kann ich mir dann einen einzelnen Eingang abgreifen, um ihn dann auf eine Case-Bedingung zu geben? Ein Beispiel wäre sehr hilfreich.

Kann ich mir denn auch irgendwie jeden Eingang auf eine Variable schreiben? Und die Variable dann später wieder als Bedingung für die Case-Schleife benutzen? (wie bei der C-Programmierung. Ich lege einen Eingang auf eine Variable und kann ihn dann später wieder abfragen/anzeigen lassen/als Bedingung für eine If-Schleife nehmen). Ein Beispiel wäre wieder nicht schlecht.


Vielen Dank für die Antworten


Sebastian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.12.2008, 10:51
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Datenerfassung / Array / Variable
' schrieb:Wie kann ich mir dann einen einzelnen Eingang abgreifen, um ihn dann auf eine Case-Bedingung zu geben? Ein Beispiel wäre sehr hilfreich.
Mit einem Beispiel kann ich leider nicht dienen, hier hab ich kein LV.

Zitat:Kann ich mir denn auch irgendwie jeden Eingang auf eine Variable schreiben? Und die Variable dann später wieder als Bedingung für die Case-Schleife benutzen?
Ja, klar. Einfach am Ausgang des Elementes Array Indizieren ein Anzeigeelement erzeugen (Cursor an Ausgang halten, Kontextmenü öffen ...).

Zitat:(wie bei der C-Programmierung. Ich lege einen Eingang auf eine Variable und kann ihn dann später wieder abfragen/anzeigen lassen/als Bedingung für eine If-Schleife nehmen).
Alles (naja, vieles, aber sehr vieles), was du in C machen kannst, kannst du auch in LV machen.

Zitat:Ein Beispiel wäre wieder nicht schlecht.
Wie gesagt, hab hier leider (oder Gott sei dank Cool) kein LV. Musst du warten bis heute Abend.

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
Anzeige
17.12.2008, 13:24
Beitrag #7

Gene1984 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Dec 2008

8.5
-
de

44227
Deutschland
Datenerfassung / Array / Variable
Danke für die schnelle Antwort. Ich werde das gleich mal versuchen umzusetzen und mich bei Erfolg nochmal melden. Ansonsten würde ich bis heute Abend warten und wäre für ein Beispiel sehr dankbar.


Gruß


Sebastian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.12.2008, 15:09
Beitrag #8

Gene1984 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Dec 2008

8.5
-
de

44227
Deutschland
Datenerfassung / Array / Variable
Hallo, ich habe mal versucht ein einzelnes Element in einem Array anzusprechen. Aber leider funktioniert dies nicht. Dafür habe folgendes Programm mit LV 8.5 geschrieben.


Ich lese die Daten von den Lichtschranken mit dem DAQ-Assistenten digital aus und lasse sie mir mit dem Digitalen Signalverlaufsgraphen darstellen. Parallel dazu indiziere ich ein Array und möchte nun, wenn Lichtschranke_1 auf "on" eine Zeit laufen lassen. Wenn die Lichtschranke_1 nicht auf "on" ist, soll eine andere Zeit laufen und dargestellt werden. Leider läuft dauernd die Zeit, die bei deaktivierter Lichtschranke laufen sollte, obwohl meine Lichtschranke "on" ist und dies mir auch im Digitalen Signalverlaufsgraphen dargestellt wird.


Ich denke das liegt daran, dass ich nicht in der Lage bin, das Element im Array anzusprechen, welches für die Lichtschranke_1 zuständig ist. Oder wo könnte das Problem liegen?


Vielen Dank schonmal im Vorraus


Angehängte Datei(en)
Sonstige .vi  Test_03.vi (Größe: 115,73 KB / Downloads: 165)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.12.2008, 18:43
Beitrag #9

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Datenerfassung / Array / Variable
' schrieb:Hallo, ich habe mal versucht ein einzelnes Element in einem Array anzusprechen. Aber leider funktioniert dies nicht. Dafür habe folgendes Programm mit LV 8.5 geschrieben.
Ich sehe gerade, du verwendest DAQ-Assi und Signalverlauf, und auch noch digital. Sowas mach ich nicht. Viel zu schwierig.

Ich kuck mirs trotzdem an. Dauer nur etwas länger.

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
17.12.2008, 19:30
Beitrag #10

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Datenerfassung / Array / Variable
Zumindest den DAQ-Assi hab ich mal weg gemacht. Den Digitalen Signalverlauf hab ich halt noch dagelassen.

Ich hab dir mal eine Überführung der Daten aus dem Digitalen Signalverlauf in ein normales Boolsches 2D-Array gemacht. Jetzt kannst du auf jedes Bit des Eingangports der DAQ-Karte zugreifen. Ob es andere Methoden gibt, auf ein einzelnes Bit zuzugreifen, weiß ich nicht.

Ich verwende für solche Sachen immer das, was im anderen Case steht: 2D-Array of U8 anstelle Signalverlauf.


Angehängte Datei(en)
Sonstige .vi  Test_03.vi (Größe: 33,92 KB / Downloads: 191)

Sonstige .vi  C8DigiTask.vi (Größe: 20,94 KB / Downloads: 159)

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
  Datenerfassung cDAQ + NI9203 keine synchrone Datenerfassung dieseldunst 5 5.586 24.06.2016 14:49
Letzter Beitrag: jg
  kontinuierliche Datenerfassung in Array speichern Jonas_02 2 4.313 04.09.2015 16:17
Letzter Beitrag: Trinitatis

Gehe zu: