Okay, jetzt muss ich doch nochmal die Experten fragen, sonst bastel' ich da morgen früh noch dran rum
...obige Frage habe ich mir vorerst quick&dirty selbst beantwortet, indem 3 der 5 Datenquellen aus der Hauptschleife raus in eigene Schleifen gewandert sind. Jeder Datenwert bekommt im Erzeuger den Timerwert Huckepack als Cluster angehängt und ist der kleiner als 1000 zu dem in der Schleife tut's der case, ansonsten geht das Datenpaket ins Leere und das nächste wird gelesen. Ist aber wie ich selbst schon schreibe eigentlich richtig unschön gelöst - besser wäre eine Art "echte" synchronisation. Ich beschreibe mal die äußeren Umstände:
Erzeuger:
1)DAQ 1000 Werte 1000 Hz (Jetzt 1050 Hz, da mit 1000 Hz 1002-1008 ms Dauer)
2)DAQ 9 Werte 9 Hz - der macht zuverlässig 1000 ms
3)RS232 lesen und schreiben in einem Rutsch (beides wichtig)
4)RS232 lesen (Daten in diesem VI unwichtig)
5)USB counter lesen - macht auch deutlich mehr als 1 Hz, also kein Timingproblem
6)Schleife, die Impulse im Sekundentakt erzeugt mit wählbarer Pause und Schaltdauer
Verbraucher:
- 4,5,6 sind unkritisch weil 4 und 5 nur begleitende Informationen sind und 6 alleine arbeitet und nur ein Bit des LPT umschaltet.
- 1 und 2 sind Temperaturdaten und 3 der zugehörige Thermostat, der einen Stellwert bekommt und seine Temperatur und die Stellwertantwort zurück gibt. Hierbei werden entweder die Werte von 1 oder die von 2 via FFT korreliert und der Thermostat entweder nach 1 oder 3 geregelt. Erfreulicherweise dauert die gesamte Schleife wenn alle Daten anliegen weniger als 1000 ms, obwohl Interpolationen und FFTs drin stecken. Wenn man etwas arbeitet steigen die Puffer der Queues aber schnell auf 5-8 an, um dann bald wieder auf 0-1 abzusinken.
...Am wichtigsten sind mir halt die Temperaturverläufe von 1 und 2, weil die in die Korrelation gehen und ehrlich gesagt auch auf dem Papier zum brechen aussehen, wenn ein Stück fehlt und der Graph nen Sprung macht. Daher würd' ich die gerne möglichst durchgängig lesen und verarbeiten, wofür man ihnen aber bestenfalls auch den Zeitpunkt der Erfassung mitgeben sollte. Die dann aber wieder synchron verarbeiten etc. - ui ui ui, ich glaube das VI ist inzwischen weit über das vorhandene Wissen hinaus. Ob das noch glatt läuft...
. Vielleicht könnt ihr mir da etwas auf den Weg zurück helfen?!
Und ich hab' nun doch mal das Main-VI angehängt. Wenn eure Kritik bzw. hoffentlich Vorschläge aber über die Queues hinaus gehen sollten wir den Thread am besten umbenennen
. Gibt bestimmt einiges, was man eleganter lösen kann, daher bin ich für jeden Hinweis dankbar. Und @RHeil ganz unten ist auch der besagte STOP-Button
(und - btw. - ein Case, der nur als Platzhalter für noch nicht eingebaute Panelobjekte dient).
Viele Grüße,
Dennis