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 

kontinuierliche Datenübergabe von mehreren SubVis in ein Array



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!

21.02.2013, 11:58
Beitrag #1

simbi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2011

11.0
2011
DE


Deutschland
kontinuierliche Datenübergabe von mehreren SubVis in ein Array
Hey LabView Freunde, ich habe ein Problem bei meiner Programmierung.

Ich habe mehrere Netzteile, die ich ansteuere. Jedes Netzteil wird über ein Subvi angesteuert. Das subvi ist jeweils das gleiche und wird reentrant gestartet/ausgeführt.
Die Netzteile können auch die aktuellen Ist-Werte angeben. Nun möchte ich die aktuellen Ist-Werte im Hauptprogramm angezeigt bekommen. Die Ist-Werte werden im SubVi in einem Idle - State im 10 ms Takt angezeigt/ erzeugt.

Das Problem ist, dass ich die Werte (Spannung, Strom) von allen Netzteilen in einem Array angezeigt bekommen möchte, da ich eine Anzeige brauche in verschiedenen Registerkarten, ja nachdem welche Registerkarte gerade aktiv ist, möchte ich eine andere Zeile im Array angezeigt bekommen. Die Werte sollen aber kontinuierlich aktuell angezeigt werden. Die Subvis laufen durchgehend und werden erst dann beendet, wenn auch das Hauptprogramm geschlossen wird.

Zur Zeit ist es so, dass ich ein Array mit einem Cluster der beiden Variablen im Hauptprogramm erzeuge. (Mir fällt gerade auf Cluster ist unnötig). Nun erstelle ich eine Referenz des Arrays. Im Subvi möchte ich über ein Eigenschaftsknoten einen einzelnen Wert im Array kontinuierlich verändern \ersetzen. Und das soll zeitgleich bei allen Subvis passieren. Jedes subvi verändert immer nur die gleiche Zeile im Array. Im Hauptprogramm werden nun auchdie Werte verändert, aber beim schreiben wird der Index geändert und somit springt das Array andauernd von einem Index zum anderen hin und her.


Ich hoffe ihr habt meine Problematik verstanden. Habt Ihr eine Idee, wie ich mein Problem lösen kann.
Da ich heute nicht an das Programm komme, folgen Vis oder Screens morgen.

Vielen Dank im vorraus

MfG Henning
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.02.2013, 12:10 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2013 12:14 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: kontinuierliche Datenübergabe von mehreren SubVis in ein Array
Hallo Henning,

Zitat:Nun erstelle ich eine Referenz des Arrays. Im Subvi möchte ich über ein Eigenschaftsknoten einen einzelnen Wert im Array kontinuierlich verändern \ersetzen. Und das soll zeitgleich bei allen Subvis passieren. Jedes subvi verändert immer nur die gleiche Zeile im Array.
OOOEEENNNKKK! RACE CONDITION!
Du hast hier parallele Read-Modify-Write-Zugriffe auf eine einzelne Resource, aka Race Condition...

Besserer Ansatz:
- Funktionale Variable: jedes subVI ruft die FGV mit den Parametern "Zeile" und "Wert" auf, die FGV speichert den Wert an der richtigen Stelle. Das HauptVI kann die Werte aus der FGV abfragen und anzeigen lassen
- Queue: jedes subVI sendet Wertepaare (Zeile, Wert) an die Queue. Im Hauptprogramm wird die Queue gelesen und die Werte in einem Array gespeichert

Ich bin ein starker Verfechter des FGV-Ansatzes...

Allgemeiner Tipp:
- Du musst die Anzeige von Daten und die Datenspeicherung im VI voneinander trennen (nicht nur hier, sondern auch gedanklich). Dies ist auch hilfreich, wenn man Daten anders darstellen will, als man sie intern speichern will.
- Mit Referenzen im 10ms-Takt rumzumachen ist auch nicht der sinnvollste Weg...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.02.2013, 15:59
Beitrag #3

simbi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2011

11.0
2011
DE


Deutschland
RE: kontinuierliche Datenübergabe von mehreren SubVis in ein Array
Hallo Gerd,

vielen Dank für deine schnelle Antwort.

Mit funktionale Globale Variablen habe ich mich bis jetzt noch nicht so sehr außereinader gesetzt.
So wie ich das aber verstanden habe, ist das ein eigenes kleines SubVi, das nur zum Schreiben und Lesen einer Variablen verwendet wird. Vielleicht hast du ein kleines Bsp. oder einen Tip, wo ich ein gutes Bsp. im Forum finde.

Für den Ansatz mit der Queue benötige ich eine extra Queue oder?
Kann nicht die gleiche Queue verwenden, mit der ich die state machine im Main steuere und auch die SubVis aufrufe und auch nicht die, mit der ich die states im SubVi regel oder?
Achso zur Erklärung: Jedes SubVi erstellt sein eigens Queue mit eigenem Namen. Diese Info wird jeweils ins main_Queue geben und somit registrieren sich die Queues. Das Hauptprogramm weiß nun, welche und wie viele vorhanden sind/ gestartet wurden.

Zitat:- Du musst die Anzeige von Daten und die Datenspeicherung im VI voneinander trennen (nicht nur hier, sondern auch gedanklich). Dies ist auch hilfreich, wenn man Daten anders darstellen will, als man sie intern speichern will.
Wie meinst du das genau? Quasi an welcher Stelle meines Programms?

Zitat:- Mit Referenzen im 10ms-Takt rumzumachen ist auch nicht der sinnvollste Weg...
Das sehe ich genauso, mir fiel gestern nix besseres mehr ein, meine Daten aktualisert in ein Array aus verschiedenen SubVis auf mein Frontpanel zu bekommen

MfG
Henning
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.02.2013, 16:17 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2013 16:29 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: kontinuierliche Datenübergabe von mehreren SubVis in ein Array
Hallo Henning,

zu den Queues:
ich würde dir empfehlen, mit nur einer Queue zu arbeiten, indem du ihr einen Namen zuweist! Alle subVIs schreiben in die gleiche Queue, das MainVI liest diese Queue aus...

Zu den FGVs:
Da gibt es genug Beispiele im Forum...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.02.2013, 16:25 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2013 16:32 von simbi.)
Beitrag #5

simbi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2011

11.0
2011
DE


Deutschland
RE: kontinuierliche Datenübergabe von mehreren SubVis in ein Array
Hallo Gerd,
ich werde morgen das SubVi der Netzteile mal hochladen.
Dort erzeuge ich zur Zeit eine Queue, die bei jedem SubVi einen anderen Namen bekommt.

erstmal vielen Dank
werde mich bis morgen weiter über FGVs informieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.02.2013, 16:33
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: kontinuierliche Datenübergabe von mehreren SubVis in ein Array
Hallo Henning,

dann gib ihnen doch den gleichen Namen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.02.2013, 10:28 (Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2013 10:54 von simbi.)
Beitrag #7

simbi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2011

11.0
2011
DE


Deutschland
RE: kontinuierliche Datenübergabe von mehreren SubVis in ein Array
wie versprochen hier mein SubVi für die Netzteile und mein Main.


Angehängte Datei(en)
11.0 .vi  Netzteil SUB VI.vi (Größe: 36,7 KB / Downloads: 214)

11.0 .vi  Main.vi (Größe: 59,85 KB / Downloads: 175)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.02.2013, 13:09
Beitrag #8

simbi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2011

11.0
2011
DE


Deutschland
RE: kontinuierliche Datenübergabe von mehreren SubVis in ein Array
Hey Gerd,
ich verstehe nicht ganz wie das funktioniert, wenn ich nur eine Queue habe.
Wie wissen dann die Netzteile ob die Spannungsänderung für sie gilt oder für ein anderes Netzteil.


Ich habe das nun mit einer FGV versucht aber weiterhin besteht das Problem die Daten aus den laufenden SubVis in das Hauptprogramm zu transportieren.

Viele Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.02.2013, 14:30 (Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2013 14:33 von jg.)
Beitrag #9

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: kontinuierliche Datenübergabe von mehreren SubVis in ein Array
Gerd hat gesagt, dass du für die Rückmeldung der Ist-Werte eine gemeinsame Queue verwenden kannst.

Von einer Ansteuerung mehrerer SubVIs per Queue(s) war zu diesem Zeitpunkt nicht die Rede.
In diesem Fall sind natürlich mehrere Queues angebracht, für jeden Prozess eine!

Gruß, Jens

P.S.: Versuche, ohne die Flat-Sequences auszukommen. Im Main-VI geht das schon auf den ersten Blick, im Netzteil-VI musst du auch nur noch eine korrekte Datenflussabhängigkeit vom Release-Queue erzeugen.

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.02.2013, 15:07
Beitrag #10

simbi Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: May 2011

11.0
2011
DE


Deutschland
RE: kontinuierliche Datenübergabe von mehreren SubVis in ein Array
Hallo Jens,

danke für deine Antwort. Hatte mich schon gewundert. Wenn man programmiert, sieht man nur noch seinen Code. Smile und vergisst was man überhaupt alles über den erzählt hat.

Ich glaube ich werde das Problem mit einer Queue versuchen zu lösen, da ich nicht weiß wie ich die Daten per FGV kontinuierlich ins Main bekomme.

Vielen Dank für den Tip versuche die Flat Sequenzen rauszuwerfen.
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
  Kontinuierliche Temperaturerfassung mehrerer Kanäle mez15 5 4.543 29.09.2015 09:41
Letzter Beitrag: GerdW
  Kontinuierliche Statistikberechung Bernhart55 4 4.191 26.08.2013 21:35
Letzter Beitrag: Bernhart55
  kontinuierliche Spannungswerte ausgeben Löffje 14 8.979 03.04.2013 13:45
Letzter Beitrag: Löffje
  Beispielprojekt "Kontinuierliche messung und Protokollierung" füllt Arbeitsspeicher JulianS. 4 7.264 11.02.2013 19:25
Letzter Beitrag: jg
  kontinuierliche Messwertabfrage und gleichzeitige x-sekündliche Wertänderung Sick 7 6.033 04.05.2012 13:45
Letzter Beitrag: Sick
  Datenübergabe am Bedienelement chap 4 4.389 31.05.2011 16:00
Letzter Beitrag: jg

Gehe zu: