(23.11.2015 10:38 )m.werle schrieb: Ich soll sozusagen eine recht lange Zyklusdauer entwerfen, in welcher mein Sample-VI in regelmäßigen Abständen diverse Daten resettet werden.
Das sollst du machen für den Fall, dass deine Applikation derart ist, dass ein Zyklus oft hintereinander gemacht wird. Voraussetzung wäre aber, dass der Zyklus einen dreiteiligen Aufbau hat: Prüfling steht in Grundstellung, Prüfling wird beaufschlagt, Prüfling geht wieder nach Grundstellung.
Wenn du aber einen Ablauf hast, der z.B. einen Motor (theoretisch) unendlich lang drehen lassen soll, dann ist dieses Verfahren an sich ungeeignet. Das Ungeeignete besteht darin, dass bei einem zyklischen Algorithmus die Daten nur einmal, nämlich an Anfang resettet werden und die eigentliche Betätigung, also das Sammeln von Daten, eine überschaubare Zeit dauert und damit einen überschaubaren Speicherbereich belegt. Bei unendlich lang musst du zwar auch am Anfang die Daten resetten - allerdings kannst du für die Dauer von unendlich keinen Speicherbereich zur Verfügung stellen.
Zitat:Läuft das dann folgendermaßen ab?
Ich hab eine äußere Whileschleife mit dieser fixen relativ langen Zyklusdauer in welcher die Initialisierung verschiedener Daten vorgenommen wird und eine innere Whileschleife in welcher die Samples entnommen werden sowie die Zeit seit dem letzten mal Resetten gemessen wird. Ein Reset ist dann das Beenden der inneren Schleife um somit diverse Daten zu Reinitialisieren.
Im Prinzip ja. Weis ich denn überhaupt schon, ob du eher eine "zyklischen Beaufschlagung" deines Prüflings hast oder ob du eine unendlich lange Beaufschlagung machen willst?
Zitat:Mein TestAnzeige-VI flusht in regelmäßigen Abständen (Anzeigezyklusdauer) die Queue in welcher die (im Sample-VI um zwei weitere Signale erweiterten) Messwerte gespeichert sind. Die Queue Referenz sowie diverse Parameter habe ich in einer FGV gespeichert.
Im TestAnzeige-VI lassen sich die Zykluszeit der Anzeige sowie die Updaterate und die Samplerate (Samples/Update) für das Sample-VI erstellen. Bei Start des TestAnzeige-VI öffnet das Sample-VI.
Prinzipiell kannst du das so machen.
Zitat:Das Sample-VI im aktuellen Zustand hat zwei Indicator, einmal für die Anzahl der Iterationen der Whileschleife und einmal für die Zeit (in ms) zwischen zwei Iterationen. Diese variiert sehr stark und hängt sehr davon ab, wie viele Samples/Update ich erfasse. Woran liegt das? Ich blick da noch nicht ganz durch. Meine eingestellte Updaterate wird ja gar nicht eingehalten
Auch ich wäre der Meinung, dass alles konstant sein müsste. Waran das liegt, muss ich erst ankucken.
Unschön ist, dass du zwei Parameter hast, die das selbe bewirken (so hab ich das zumindest verstanden): "Zeit zwischen zwei Iterationen" und "Samples/Update". Ichhabe noch in Erinnerung, dass die immer eine feste Anzahl ("Samples/Update) Maus dem DAQmx herausliest. Ich würde immer herauslesen, was vorhanden ist. Spätestens dann muss die Zyklusdauer der inneren Whileschleife konstant sein.
Zitat:Genau, die Evenstructure wollte ich ins Sample-VI packen.
Hab ich selbst noch nie gemacht, würde ich wohl auch nie tun ...
Zitat:Die Prüfalgorithmen mag ich möglichst schnell nach der Datenerfassung abwickeln. Das Anzeige-VI hat eine zu lange Zyklusdauer, deshalb dachte ich wäre es sinnvoll alle Prüfalgorithmen direkt ins Sample-VI zu packen.
Genauso mache ich das auch.
Neben dem zugegebenermaßen sehr wichtigen Prinzip "THINK DATAFLOW" kannst du ohne weiteres aber auch modular und objekt-orientiert denken. Für deinen Fall würde ich folgendes überlegen:
Ich nehme ein VI ("Sample-VI"), das selbstständig, also ohne jedwede Einbindung in einen Datenfluss, im Hintergrund läuft. Gesteuert wird das VI durch eine Steuer-Queue. Dieses VI ist dann ein selbstständiges Modul (also ein Objekt). Was dieses Modul machen soll, bekommt es über die Queue gesagt: Daten initialisieren, in den Dauerlauf-Case gehen und die geforderte Arbeit machen, in den Standby-Case gehen und lediglich aktuelle Messwerte erfassten usw. Im übrigen haben "Hintergrund-VIs" keine aktives Frontpanel. Grundaufbau des Moduls: Eine Whileschleife mit Schieberegistern, in der sich eine per Enumerator gesteuerte Case-Struktur sowie eine in Reihe geschaltete Abfrage der Steuerqueue befindet.
Gesteuert wird dieses Hintergrund-VI durch ein VI, das bereits die User-Schnittstelle enthalten kann: Also ein Frontpanel mit Eingabe- und Anzeigeelementen. Wichtig in diesem VI ist eine eigenständige Whileschleife, die z.B. die Daten aus dem Sample-VI liest und das Sample-VI steuert.