LabVIEWForum.de
Daten aus einer Leitung in Array speichern - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Daten aus einer Leitung in Array speichern (/Thread-Daten-aus-einer-Leitung-in-Array-speichern)

Seiten: 1 2


Daten aus einer Leitung in Array speichern - Sascha Meyer - 19.11.2012 14:30

Moin,
mein Name ist Sascha und ich arbeite zur Zeit an einem Projekt im Rahmen meines Studiums, indem ich CAN-Daten aus dem Peugeot iOn lese.

Folgendes Problem:
Ich bekomme aus dem CAN-bus mehrere Signale. Gaspedalstellung,Bremsdruck, Geschwindigkeit usw.
Ein Signal z.B. das "Gaspedal" kommt in einem Intervall von 0,01 Sekunden.
Zur Weiterverarbeitung dieses Signales würde ich gerne 6000 Werte im Array (Spaltenvektor) sammeln.

Meine Idee zur Lösung:
Zuerst baue ich mir eine Art Prüfstand.
Ich generiere Zufallszahlen alle 0,01s und speichere diese im Array ab.
Diese Lösung funktioniert allerdings nur, wenn die Zufallszahl in einer for - Schleife ist.
Da ich meine Signale nicht in eine for - schleife einbinden kann, bräuchte ich eine Andere Lösung!

Dieses Problem wurde hier und im Internet schon öfters angesprochen. Jedoch sind die Antworten für mich nicht klar genug gewesen.

Im Anhang habe ich den Prüfstand als vi.
Ich arbeite mit LabVIEW 2012.

Schon mal vielen Dank im Vorraus

Verzeihung das ich dieses Thema in Datenerfassung gespeichert habe.


Beste Grüße
Sascha


RE: Daten aus einer Leitung in Array speichern - SchwindelInside - 19.11.2012 17:15

(19.11.2012 14:30 )Sascha Meyer schrieb:  Moin,
mein Name ist Sascha und ich arbeite zur Zeit an einem Projekt im Rahmen meines Studiums, indem ich CAN-Daten aus dem Peugeot iOn lese.

Folgendes Problem:
Ich bekomme aus dem CAN-bus mehrere Signale. Gaspedalstellung,Bremsdruck, Geschwindigkeit usw.
Ein Signal z.B. das "Gaspedal" kommt in einem Intervall von 0,01 Sekunden.
Zur Weiterverarbeitung dieses Signales würde ich gerne 6000 Werte im Array (Spaltenvektor) sammeln.

Meine Idee zur Lösung:
Zuerst baue ich mir eine Art Prüfstand.
Ich generiere Zufallszahlen alle 0,01s und speichere diese im Array ab.
Diese Lösung funktioniert allerdings nur, wenn die Zufallszahl in einer for - Schleife ist.
Da ich meine Signale nicht in eine for - schleife einbinden kann, bräuchte ich eine Andere Lösung!

Dieses Problem wurde hier und im Internet schon öfters angesprochen. Jedoch sind die Antworten für mich nicht klar genug gewesen.

Im Anhang habe ich den Prüfstand als vi.
Ich arbeite mit LabVIEW 2012.

Schon mal vielen Dank im Vorraus

Verzeihung das ich dieses Thema in Datenerfassung gespeichert habe.


Beste Grüße
Sascha

So wie mit der zufallszahl wird das nicht funktionieren, da Du ja immer genau eine Zufallszahl pro Schleifendurchlauf bekommst.
Bei auslesen der CAN-Schnittstelle wird es da etwas komplizierter, da die Daten nicht exakt so schnell einflattern wie Deine Schleifenzyklen.
Wenn Dein CAN-Bus gepuffert ist, liegen je nach größe immer mehrere Messwerte im Puffer. Diesen musst Du in regelmäßigen Abständen auslesen und die Daten auschnipseln und sortieren. Dannach kannst Du Element für Element mit einer For-Schleife in ein Array schreiben.
Wenn Du schon weißt, dass Du 6000 Werte in ein Array speichern möchtest, dann initailisier Dir den Array auserhalb der Schleife auf diese Größe vor und ersetze die Nullen dann mittels For-Schleife durch Deine Messwerte.

Gruß SI


RE: Daten aus einer Leitung in Array speichern - Sascha Meyer - 20.11.2012 08:58

Vielen Dank für die Antwort.

Das Signal was ich vom CAN-bus abrufen will kommt alle 0,01s.Somit haben wir 6000 Signale in der Minute. Kannst du mir bitte nochmal genauer erklären wie das vi aussehen soll. Die Array initialisierung habe ich, nur weiß ich genau wie du das mit der for schleife meintest?!

Mir geht es wirklich nur um das Problem, dass ich nicht weiß wie ich in LabVIEW ein array aufbauen kann, dessen Werte aus einer Leitung kommen.

Beste Grüße

Sascha


RE: Daten aus einer Leitung in Array speichern - GerdW - 20.11.2012 09:13

Hallo Sascha,

Zitat:ich nicht weiß wie ich in LabVIEW ein array aufbauen kann, dessen Werte aus einer Leitung kommen.
1) Hast du schon mal daran gedacht, die Einsteigerkurse bei NI durchzugehen? (s. Link unten)
2) "Leitung" ist kein sehr treffender Term, er sagt nichts über den Datentyp aus!
3) Mal ein paar Beispiele, alle mit Vor- und Nachteilen:
[attachment=42278]


RE: Daten aus einer Leitung in Array speichern - Sascha Meyer - 20.11.2012 09:59

ja das hast du sicher recht das Leitung kein sicherer Term ist.
Leider kann die die "Leitung"( Es ist der Datentyp double) nicht in eine for bzw. while Schleife packen.
Ansonsten wäre es kein Problem und ich könnte es so angehen wie in dem Bild zu sehen ist.

Trotztdem vielen Dank für die Antwort

Beste Grüße

Sascha


RE: Daten aus einer Leitung in Array speichern - GerdW - 20.11.2012 10:07

Hallo Sascha,

Zitat:Leider kann die die "Leitung"( Es ist der Datentyp double) nicht in eine for bzw. while Schleife packen.
Ich bin mir ziemlich sicher, dass dein Vi in einer Schleife in einem Haupt-VI aufgerufen wird. Ansonsten gibt es ja auch noch FeedbackNodes, die ohne Schleife auskommen:
[attachment=42279]


RE: Daten aus einer Leitung in Array speichern - SchwindelInside - 20.11.2012 11:45

(20.11.2012 09:13 )GerdW schrieb:  Hallo Sascha,

Zitat:ich nicht weiß wie ich in LabVIEW ein array aufbauen kann, dessen Werte aus einer Leitung kommen.
1) Hast du schon mal daran gedacht, die Einsteigerkurse bei NI durchzugehen? (s. Link unten)
2) "Leitung" ist kein sehr treffender Term, er sagt nichts über den Datentyp aus!
3) Mal ein paar Beispiele, alle mit Vor- und Nachteilen:

Das 4. Beispiel ist das was ich meine. Allerdings ohne durch die 1000 zu dividieren. Ich verstehe echt nicht was dieser Quotienten-Rest da soll. Huh Der ergibt doch immer null, ebenso wie der ganzahlige Quotientenanteil, wenn der Divisor größer ist als der Divident. Sascha will doch nicht nur jedes 1000ste Element speichern sondern jedes, soweit ich das verstanden habe.

Auf den Labview-Veranstaltungen habe ich gelernt, dass beim Anfügen von Elementen an ein Array jedes mal eine Kopie des Arrays im Speicher angelegt wird. Dadurch besteht bei vielen Schleifenzyklen eine erhöhte Gefahr von Speicherüberläufen. Deshalb wird empfohlen ein Array wenn möglich vorzuinitialisieren und dann die Elemente zu ersetzen. Dann wird immer nur so viel Speicher belegt, wie das Array in der vorinitilisierten Größe benötigt.

Die Bezeichnung "Leitung" finde ich in Labview in Ordnung. Da weiß eigentlich jeder was gemeint ist. Man könnte es auch " Datenflussleitung", "Verdrahtung" oder "Verbindung" nennen. Den Datentyp kann man ja, wenn nötig, mit dazu nennen.

viele Grüße
Stefan


RE: Daten aus einer Leitung in Array speichern - GerdW - 20.11.2012 11:48

Hallo Stefan,

Zitat:Ich verstehe echt nicht was dieser Quotienten-Rest da soll
Der Rest einer Division von i und 1000 ist nicht immer Null...
Modulo-Rechnung hatte ich in der (ca.) 5. Klasse das erste mal... Big Grin

Ich habe ein Array mit 1000 Elementen definiert und möchte ein Element nach dem anderen durch einen Messwert ersetzen. Der Schleifenzähler zählt hoch und der Remainder begrenzt das ganze auf den Bereich 0...999!


RE: Daten aus einer Leitung in Array speichern - SchwindelInside - 20.11.2012 12:25

(20.11.2012 11:48 )GerdW schrieb:  Hallo Stefan,

Zitat:Ich verstehe echt nicht was dieser Quotienten-Rest da soll
Der Rest einer Division von i und 1000 ist nicht immer Null...
Modulo-Rechnung hatte ich in der (ca.) 5. Klasse das erste mal... Big Grin

Ich habe ein Array mit 1000 Elementen definiert und möchte ein Element nach dem anderen durch einen Messwert ersetzen. Der Schleifenzähler zählt hoch und der Remainder begrenzt das ganze auf den Bereich 0...999!
Hallo Gerd,

Ich gebe Zu mit Divisions-Resten habe ich mich nicht mehr beschäftigt, seitdem der Taschenrechner die Division für ich übernimmt. Big Grin
Dann überschreibst Du aber aller 1000 mal alle Werte wieder. Ist das gewollt?

Grüße
Stefan


RE: Daten aus einer Leitung in Array speichern - Sascha Meyer - 20.11.2012 12:43

Hallo,2hands

vielen Dank für den Hinweis mit den FeedbackNodes. Genau das habe ich gesucht.
Vielen Dank für Eure Hilfe!YourockYourock
Ihr habt hervorragende Arbeit geleistet!

Ich komme gern auf Eure Hilfe wieder zurück.

Beste Grüße

Sascha