RE: kontinuierliche Datenübergabe von mehreren SubVis in ein Array
Äh... mal ein kurzer Einwurf:
Warum reicht nicht eine Referenz aufs Array und Reinschreiben über Teilarray ersetzen? (mit jeweils eben einem Element)
Da sich jedes Netzteil nur für "sein" Arrayelement (Netzteil 1 nur für Index 0, zwei nur für Index 1 ....) interessiert sollte das doch auch noch keine Racing Conditions hervorrufen oder? (sinnvollerweise würde man ja annehmen, dass Labview das auf unterster Ebene über ein Schreiben in die Referenz des entsprechenden Array Elements erledigt und nicht das ganze restliche Array mit anpackt)
Oder macht das Labview anders? Ich meine - ist sicher nicht die eleganteste Lösung, aber in dem Fall wohl mit relativ wenig Aufwand umzusetzen. Probleme gäbe es doch nur wenn man es mit einer Lese und einer Schreiboperation zu tun hätte die voneinander abhängen UND noch dazu mehrere Prozesse auf den gleichen Bereich Schreiben dürfen. Das ist hier ja meinem empfinden nach nicht der Fall.
Soweit ich das verstehe soll das ja "nur" ne Anzeige sein, die im schlimmsten Fall mal mitgeschrieben wird...
Was sauber durchdacht sein muss ist die Spannungsverstellung der Netzteile. Wenn man dafür den Netzteilen einfach einmal einen Wert schickt und die den dann selbst anfahren ist das relativ unkritisch, dann muss man anschließend nur überwachen wann der Wert erreicht ist (geht ja meist sehr fix). Wenn man dagegen manuell durch Spannung nachprüfen und modifizieren fahren muss, dann sollte man entsprechende Reaktionszeiten einplanen (sprich: Nicht zu schnell regeln, da man sonst überregelt).
Sauberer sind natürlich die Lösungen mit Queue / FGV. Der Trick ist jeweils, dass nur ein Schreib- / Leseprozess zur gleichen Zeit durchgeführt wird - entweder weil nur eine Stelle im Program schreiben kann (Queue Konsument im Main VI der alle Daten geschickt kriegt), oder die FGV verhindert, dass zwei Prozesse sie gleichzeitig ausführen (entsprechend darf das VI dafür natürlich auch NICHT als Ablaufinvariant markiert werden).
P.S: Beide Varianten können allerdings immer noch nicht sicher sicherstellen, dass auch wirklich auf Lesevorgänge mit verarbeiten der gelesenen Daten und daraus resultierendem Schreiben auch wirklich keine Racing Conditions entstehen können (dafür muss man noch zusätzlich Sperrmechanismen implementieren) - aber auch solche Probleme sehe ich bei deinem Aufbau jetzt auf Anhieb nicht.
P.P.S: Zu deiner Frage wie du die Daten aus der FGV in die Main kriegst:
Die Daten aus der FGV liest du einfach mit einem (von dir programmierten) "ganzes Array" lesen in der Main ein und schreibst die in die Anzeige. (dazu brauchen dann noch die Netzteile eine Funktion mit der sie jeweils nur ihren Datensatz setzen).
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
|