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 

Kommunikation zwischen parallelen VIs



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!

05.03.2012, 11:44
Beitrag #1

cRio Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Nov 2011

2011
-
EN


Deutschland
Kommunikation zwischen parallelen VIs
Hallo miteinander!
Ich habe mir mehrere Teil-VIs erstellt,die jeweils in einer While Schleife laufen (teils mit unterschiedlichen Geschwindigkeiten). Nachdem ich sie separat für sich alle getestet habe, möchte ich sie nun in einem Haupt-VI zusammenfügen, da nur ein Haupt-.VI auf dem FPGA kompiliert werden kann. Um Daten zwischen den einzelnen Teil-VIs auszutauschen, würde ich FGVs wählen um RaceConditions zu vermeiden. Dazu muss ich für jeden Wert den ich von einem Teil-VI zum nächsten transportieren will eine FGV mit dem passenden Datentyp erstellen und jeweils in die Schleife des Teil-VIs miteinfügen (einmal das Schreiben, und in das andere Teil-VI das auslesen), richtig?
Außerdem möchte ich per Referenz einige Werte von Teil-VIs schreiben oder lesen. Ich kann jedoch keine Referenz auf die Teil-VIs machen, da ja nur das Haupt-VI kompiliert wird. Dazu müsste ich diese Werte aus den Teil-VIs irgendwie herausziehen. Da die aber in ihren Scheifen laufen, kann man nicht einfach einen Wert auf einen Ausgang legen oder?
Wie geht man hier vor?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2012, 12:02
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Kommunikation zwischen parallelen VIs
Hallo cRIO,

bisher bin ich auf dem FPGA damit ausgekommen, alles im HauptVI zu erledigen. Dann kann man auch lokale Variablen nutzen, statt noch mehr subVIs (hier: FGVs) einzuführen.

Ein möglicher Zwischenschritt wäre möglich: die BD-Platz schluckenden Rechnungen in subVIs packen, aber das Schleifenhandling im HauptVI belassen. So hat man alle nötigen Anzeigen im HauptVI und kann per Referenz darauf zugreifen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2012, 12:23
Beitrag #3

cRio Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Nov 2011

2011
-
EN


Deutschland
RE: Kommunikation zwischen parallelen VIs
Wow danke für die Blitzantwort!
Ok lokale Variablen wären auch ein Lösungsweg, aber FGVs müssten funktionieren, soweit ich dich richtig verstanden habe.
Beim 2ten Teil der Antwort komm ich nicht ganz mit, sorry, kannst du es bitte für LbView-Dummies in Worte fassen?
Hab schon so was ähnliches gefunden:
http://www.labviewforum.de/Thread-Kommun...unter-FPGA
Hier mal ein einfaches BSP als Bild. Wenn ich einfach die Beiden Teil-VIs in ein Haupt-VI ziehe und eine Schleife drum herum mache, dann Controls oder Ausgaben herausziehe, wird auf dem Ausgang OUT im Haupt-VI nichts angezeigt.
Oder erkläre ich zu schlecht was ich meine?


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2012, 12:50
Beitrag #4

cRio Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Nov 2011

2011
-
EN


Deutschland
RE: Kommunikation zwischen parallelen VIs
Wenn ich das richtig sehe:
ich komme jetzt nicht umhin, die While-Schleifen der Teil-VIs (die vorher nötig waren um ein einzelnes Teil-VI zu testen) aus dem BlockDiagramm der Teil-VIs zu entfernen und den Rest des Blockdiagramms in eine While-Schleife zu ziehen. Dann werden auch die Ausgaben angezeigt, da nicht mehr gewartet wird, bis die innere While-Schleife des Teil-VIs beendet ist, sodass die Ausgabe nach aussen dringt. Dann klappts auch mit den Referenzen auf das Haupt-VI.
Ich finde es nur sehr abschreckend, alle While-Schleifen entfernen zu müssen, da es teil viele Shift-Register sind und eine Vielzahl an Ein/Ausgängen. Dachte vielleicht gibts da geschickte, zeitsparende Möglichkeiten dafür.
Oder habe nur ich das Bedürfnis Codeabschnitte zu testen, anstatt das gesamte Projekt? Dann muss ich die Teil-VIs auch mit While-Schleifen erstellen, und später beim zusammenfügen wieder alle entfernen. Wie macht man das sonst?


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2012, 13:45
Beitrag #5

cRio Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Nov 2011

2011
-
EN


Deutschland
RE: Kommunikation zwischen parallelen VIs
ShiftRegister müsste man natürlich nicht auf Ein-/Ausgänge legen um das ShiftRegister in der äußeren Schleife wieder zu realisieren (so wie ich das im BSP gemacht habe), die kann man auch durch einen Rückkopplungsknoten ersetzen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2012, 14:32
Beitrag #6

eb Offline
LVF-Lernwilliger
***


Beiträge: 292
Registriert seit: Mar 2008

2014
2008
EN

12xxx
Deutschland
RE: Kommunikation zwischen parallelen VIs
Hallo,

diese Herausforderung des "debuggbaren Codes auf FPGA" ergibt sich immer wieder.
Es gibt mehrere Wege.

Der eine wäre wo es geht statt Shiftregistern die Rückkopplungsknoten zu verwenden. Sie funktionieren genauso, aber haben (zum Programmierzeitpunkt) keine zugehörige Schleife. Erst wenn kompiliert wird, ist die nächsthöhere Schleife in der der Rückkopplungsknoten sitzt verantwortlich für das "Weiterreichen" in den nächsten Schleifendurchlauf. So läßt sich sehr sauberer und wiederverwendbarer Code erstellen.
Das Problem dabei ist, das man nicht vergessen darf, dass ein Rückkopplungsknoten immer von einem SDL zum nächsten reicht. Damit meine ich folgende Situation: Wenn ein SubVI RKK enthält, und dieses SubVI wird nun in eine (z.B. For-)Schleife getan, weil man mehrere "parallele" Informationen abarbeiten will, dass dann der Zustand des RKK an folgende SDL weitergegeben wird. Ist nicht schlimm, nur man darf es nicht vergessen.

Ein weinterer Weg wäre die Verwendung von Memory.

Ein dritter weg wäre: Nur genau EIN Shiftregister benutzen, nämlich nur auf der Hauptebene. So müssten sämtliche SubVIs ihre Zwischenparameter (die eigentlich für die RKK sind) nach außen führen. Mehrer Zwischenergebnisse werden geclustert. Auch verschachtelte SubVIs reichen so ihre Zwischenwerte immer sauber "bis ganz noch oben" durch. Auf der Hauptebene wird dann ein Shiftregister oder RKK benutzt...


Was man nun aber nimmt für den perfekten Code, hängt leider immer vom Einzelfall ab.
Zumindest sehe ich das momentan so. Ich hoffe das war verständlich und ein wenig nützlich.


Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Kommunikation über DMA zwischen FPGA und RT: FIFO nur für 3 ms füllen Rostra 9 9.317 18.06.2015 06:17
Letzter Beitrag: Rostra
  Kommunikation zwischen FPGA und Host skar 13 13.967 09.09.2014 14:08
Letzter Beitrag: skar
  Zeitverzögerung zwischen parallelen Schleifen - ungewollt! Harry Hirsch 10 8.908 18.07.2012 11:36
Letzter Beitrag: Harry Hirsch
  Kommunikation zwischen Subvi's unter FPGA antau 2 4.149 14.01.2010 16:37
Letzter Beitrag: antau
  LabVIEW Simulation vom parallelen BF537 EZ-KIT LITE auswerten lassen HK123 0 3.426 16.10.2008 08:26
Letzter Beitrag: HK123

Gehe zu: