(17.11.2015 16:52 )m.werle schrieb: Das Anzeige-VI FP möchte ich durch global gespeicherte Referenzen auf die FP-Elemente und Propertynodes(Value) lösen.
Hiervon möchte ich abraten - siehe auch dein DAQ-VI.
Aus mehreren Gründen:
- Globale Variablen zu verwenden ist auch in Labview die schlechteste aller Möglichkeiten. FGVs sind besser.
- Wenn du Referenzen verwendest, dann nimm strikt-typisierte. Die erkennst du daran, dass letztendlich kein roter Konvertierungspunkt erscheint. Das hat dann nämlich gleich den Vorteil, dass du die Daten am Propertynode nicht per Variant übergeben musst.
- Eine Vermischung von Algorithmus-Operationen und Anzeige-Operationen innerhalb eines VIs halte ich immer für schlecht. Anzeige-Operationen dauern sehr lange, Algorithmus-Operationen gehen meistens sehr schnell.
Zitat:Wohin mit der RMS/AVG/Peak-Wertgeschichte? Wenn ich diese ins DAQ-VI packe, sorgt das für eine geringere Updaterate, nehme ich an.
Updaterate von was? Anzeige am Frontpanel?
Ich würde das wie folgt machen:
- Ein VI macht alles das, was mit den zu erfassenden Daten und deren grober Verarbeitung zusammenhängt. Hauptaufgabe wird sein, die erfassten Daten aus dem DAQmx zu lesen. Diese Daten liegen dann paketweise vor. Paketweise kannst du sie jetzt weiter verrechnen. z.B. Größere Pakete erstellen und/oder Mittelwert bilden, Peak feststellen etc. Diese Arbeiten - Lesen, Berechnungen wie AVG und Tests etc. - fallen unter "Algorithmus". Wenn du an dieser Stelle ein Arbeitsraster von 5ms verwendest, kannst du hier gleich, wenn du einen zu langen Peak feststellt, die Maschine abstellen.
- Die Daten, die du anzeigen oder auch speichern willst, stellst du entweder per Melder zur Verfügung oder verschickst sie per Queue.
- Die Anzeige (oder das Speichern) machst du in einem separaten VI. Eine Anzeige muss nicht im Raster von 10ms refreshed werden, auch nicht im Raster von 100ms, 250ms sind genug. Dass bei einer Abtastrate von 5ms und einer Anzeigerate von 250ms öfters in die Queue geschrieben wird als aus ihr gelesen wird, spielt überhaupt keine Rolle. In der Anzeige ließt du einfach die komplette Queue aus und verarbeitest die (durchschnittlich) 50 Datenpakete innerhalb eines Anzeigezyklusses.