Hallo Samuel,
Zitat:Schwachstellen
- du startest die DAQmx-Tasks in der Schleife über eine Case-Struktur (und erst nach den Lese-/Schreiboperationen...). Erledige das vor der Schleife...
- du benutzt den SimplePID mit seinen Standard-PID-Parametern. Das kann, muss aber nicht funktionieren...
- Du gibst eine Samplerate vor, liest dann aber "-1" Samples, d.h. so viele wie vorhanden. Das führt zu ungleichmäßig großen Datenblöcken. Gib lieber eine feste Anzahl Samples zum Lesen vor.
- Du liest Werte ein, bearbeitest diese und gibst dann eine Antwort aus. Je größer du diese Datenblöcke machst, desto größer wird die Verzögerung des Reglers und damit (i.A.) die Regelung schlechter! Du solltest wie im Beispiel-VI in deinem alten Thread für einen Regler möglichst bei Einzelwerterfassung bleiben...
- Wozu eine FOR-Loop, die fest auf "1 Iteration" eingestellt wird? Dann kann man diese Loop auch löschen...
- Um aus einem skalaren Wert ein Array mit einem Element zu erstellen, kann man BuildArray verwenden. InitArray ist hier Overkill...
- Eine flache Sequenz ist besser als eine gestapelte!
- Keine Sequenz ist besser als eine Sequenz...
- Um ein "Nullsignal" auszugeben, muss man keinen Sinus mit Amplitude Null berechnen...
- "#s" ist momentan auf Null gesetzt, das macht sich ungünstig, wenn man Signale ausgeben will...
- Nur den Maximalwert als Istwert zu verwenden fühlt sich irgendwie nicht "richtig" an...