Also,
das ist ja schon relativ umfangreich... Folgendes würde ich mal zu bedenken geben, ohne zu wissen, ob das ganze wirklich Dein Problem löst:
- Wozu brauchst du die Fehlercluster und die Fehlerabfrage? Wenn die Fehlerkonstante sagt, dass Du keinen Fehler hast, wird der "Fehler-Fall" auch nie eintreten. Selbst wenn der Compiler das merken würde, ists immer noch einfach tierisch unübersichtlich
- Du machst extrem viele Fixkommaoperationen. Würde es nicht langen, diese vor dem allerletzten Schritt zu machen? Hätte auch den Vorteil, dass du keine Genauigkeitsverluste hast, die über ein 1LSB hinaus gehen... Mit der Quotient und Reminder Funktion kann das schon größer werden.
- Generell finde ich die Struktur merkwürdig - allerdings hab ich keine Ahnung, was Du für Anforderungen hast. Generell macht es m.E. wenig Sinn, die Mittelung nach jedem neuen Messwert durchzuführen (was im übrigen auch einfacher gehen würde, als immer das gesamte Array aufzuaddieren, in dem man nämlich einfach die Änderung des MIttelwerts durch den neuen Wert auf den bisherigen Mittelwert aufaddiert (also xQuerNeu = XQuerAlt + neuerWert/AnzahlWerteGesamt). Da die Schleife mit größer werdendem Array auch länger braucht, kommst Du irgendwann an den Punkt, wo nicht mehr dein LoopTimer die Datenrate regelt, sondern die Schleife...
Wenn Du Daten nicht direkt im FPGA für irgendwas brauchst, würde ich da nur Daten aufnehmen, per DMA an den Host übertragen udn Mittelungen etc. dort machen...
- Die beiden Timer für die Digital und Analog-Eingänge widersprecens ich. Weiß nicht, wie LabVIEW damit umgeht. Daher lieber zwei While-Schleifen für beide Funktionen
- Da Deine Mittelung für alle Kanäle gleich zu funktionieren scheint: Sub-VI bauen und alle nur in 1 Schleife packen. Wenn der Compiler gut ist, macht das zwar nix, aber ich bin mir nicht so ganz sicher, wie gut der compiler ist...
Das fällt mir jetzt so auf Anhieb ein... Vielleicht hilft es ja, erstmal jede Funktionalität für einen Kanal zum Funktionieren zu bringen - beim FPGA sind die Chancen sehr hoch, dass eine parallele Vervielfältigung definitiv funktioniert.
Viel Erfolg,
ch