Forum: PC-Programmierung Ausführungsgeschwindigkeit einer Matlab Anweisung


von Msp 4. (msp430_crew)


Lesenswert?

Hallo Liebes Forum,
ich habe eine Frage beszüglich der Geschwindigkeit von Matlab.
Ich möchte gerne ein Signal erzeugen von 1ms.
1
tic
2
WriteDigitalChannel('dev1/port0/line0', '1')
3
pause(0.001)
4
WriteDigitalChannel('dev1/port0/line0', '0')
5
toc
Leider benötigen die Schreibbefehle schon mehr als 100ms (Elapsed time 
is 0.174368 seconds).

Nun zu meiner Frage, was mache ich falsch bzw. wo liegt mein Denkfehler? 
Ist Matlab nicht dafür geeignet?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Warum die Funktion die du aufrufst so lange braucht kann man nicht 
kommentieren ohne die Funktion zu kennen. Generell darfst du aber nicht 
erwarten mit MATLAB an irgend einer Hardware Bitwackeleien im 
Millisekunden-Takt durchführen zu können. Dafür sind weder MATLAB noch 
aktuelle PC-Betriebssysteme gedacht. Und garantiertes Timing gibt es 
sowieso nicht (keine Echtzeittauglichkeit).

von Msp 4. (msp430_crew)


Lesenswert?

Hallo Andreas,
also würdest Du sagen das Matlab dafür ungeignet ist und ich doch wieder 
auf einen Mikrocontroller zurückgreifen muss?

Ich benutze eine NI USB-6251 und ein BNC-2120. Welchen Sinn hätte dann 
aber diese Hardware und der DAQmx Treiber wenn man nur im Sek/10 
arbeiten  könnte?

Habe schon etliche Zeit mit Recherche verbracht und es leuchtet mir noch 
nicht ein.

Viele Grüße!

von Karl (Gast)


Lesenswert?

Wahrscheinlich gibts dazu auch ne Simulink Toolbox. Da kann man mit dem 
Windows-Realtime Target schon noch einiges reißen.

von TestX .. (xaos)


Lesenswert?

mit matlab selber bekommst du nichts echtzeitfähiges hin... besser sieht 
es da schon mit einem xpc target aus..

von Zorc (Gast)


Lesenswert?

Richtig, wenn man fuer triviale Dinge wie Bitwackeln ein vernuenftiges 
Timing haben will, so muss man zwingend einen externen Controller 
nehmen.

von Niels K. (niels-k)


Lesenswert?

Kann ich nur zustimmen, mit Matlab ist ein anständiges Timing außerhalb 
des Bereichs einer halben Sekunde unmöglich - und wenn dann ist pause 
ohnehin der falsche Weg.

Die einzige Möglichkeit, die bleibt ist das Verwenden der Simulink 
Realtime Toolbox - damit kann man dann auch etwas schneller und 
zeitdiskreter arbeiten. Aber ich rate Matlab in die Ecke zu schmeißen 
und stattdessen einen uC-mit serieller Anbindung die Einlese-/ 
Ausgabearbeit machen zu lassen. Und selbst dabei wird Matlab beim 
Einlesen noch überfordert sein und eine CPU-Last von 130% bescheren. Ich 
spreche da übrigens aus Erfahrung, da ich ganz ähnliche Probleme damit 
hatte.

von Msp 4. (msp430_crew)


Lesenswert?

@Niels
Ich habe mich auch schon mit der Realtime Toolbox und dem XPC Target 
beschäftigt. Leider sehe ich da nicht die Möglichkeiten selbst 
einzugreifen. Es läuft doch alles unter der Simulink Oberfläche und 
meinen Code kann ich nur umständlich einschleusen, oder?

Was hattest Du schönes realisiert? Hast Du einen guten Einstieg in die 
Realtime Box? Eventuell eine gutes Tutorial oder eine Arbeit dazu?

Viele Grüße,
Patti

von Niels K. (niels-k)


Lesenswert?

Msp 430_crew schrieb:

> Was hattest Du schönes realisiert?
Viel - eher zu viel: Von der Maschinensteuerung bis hin zum einfachen 
5-Minuten Versuchsaufbau. Was hier von Interesse ist: Im Rahmen eines 
Reglerdesigns für einen Positionierantrieb, hatte ich mit der Option 
"Hardware in the Loop" zunächst den Frequenzgang des Antriebs 
untersucht. Anschließend dann den Regler damit ausgelegt. Da ich über 
die Rauschantwort und eine Korrelationsanalyse den Frequenzgang gewonnen 
habe, waren die Anforderungen vergleichbar, nur mit dem Unterschied, 
dass es sich um einen zwischengeschalteten DAC handelte, anstelle eines 
Binärausgangs. Die Zeiten waren aber vergleichbar.

>Hast Du einen guten Einstieg in die
>Realtime Box? Eventuell eine gutes Tutorial oder eine Arbeit dazu?

Leider nein. Am Besten beim Hersteller der Karten nachfragen, die haben 
immer ein paar Sample-Programme. Bei Programmproblemen bei Mathworks 
anfragen - der Support ist dort wirklich brauchbar.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.