Hallo liebe Labview-Gemeinde,
ich arbeite an einem Uniprojekt, in dem es um die Ansteuerung eines Regelungstechnik-Teststands über Matlab geht. In diesem Teststand ist ein "LabJack U12" verbaut. Diesen spreche ich per "AOUpdate"-Befehl (
https://labjack.com/support/datasheets/u...e/aoupdate ) und über den Windows-Treiber "ljackuw.dll" an.
Alles funktioniert super, mein Problem ist die Dauer einer Schleifeniteration. Für eine Durchführung des Befehls
[errorCode, idnum, stateD, stateIO, count] = lj.LabJack.AOUpdate(idnum, demo, trisD, trisIO, stateD, stateIO, updateDigital, resetCounter, count, analogOut0, analogOut1)
benötigt Matlab durchschnittlich 160 bis teilweise über 200ms anstatt der für Windows als normal angegebenen 16ms. Dadurch benötigt ein Durchlauf meines gesamten Codes etwa eine Viertelsekunde, was für eine genaue Regelung eines schnellen Systems (hier: Drehzahlregelung) nicht zielführend ist.
Könnte diese Rechenzeit mit der Menge an Eingabeparametern und zu überprüfenden Werten (Error Codes etc.) zusammenhängen? In meinem Fall benötige ich den Großteil der Eingabewerte nicht, die natürlich trotzdem alle überprüft werden.
Die Ansteuerung des Teststands über einen Arduino anstelle des Labjacks (ebenfalls über Matlab) benötigt etwa die gewollte Zeit von 16-25ms, was darauf schließen lässt, dass das Problem an der Labjack-Matlab-Anbindung liegt. Unter Labview arbeitet der Labjack signifikant schneller, Labview ist für mich nur leider keine Option.
Hat irgendein pfiffiger Labjack-Nutzer eine Idee, wie man ihn schneller ansteuern könnte bzw. ob es ohne die vorgegebenen Befehle funktioniert und ob das Ganze eventuell sogar andere Ursachen haben kann?
Die Arduino-Ansteuerung ist nur ein Notnagel, auf den ich eigentlich nicht zurückgreifen möchte, besonders da der Labjack zum Teststand gehört und fest verbaut ist.
Ich danke Euch für Eure Hilfe!
PS: Auf Wunsch kann ich natürlich auch meine Matlabdatei hochladen, da es im Grunde aber nur um einen Befehl geht, ist dies wahrscheinlich überflüssig...