mikrocontroller.net

Forum: PC-Programmierung Ausführungsgeschwindigkeit einer Matlab Anweisung


Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Liebes Forum,
ich habe eine Frage beszüglich der Geschwindigkeit von Matlab.
Ich möchte gerne ein Signal erzeugen von 1ms.
tic
WriteDigitalChannel('dev1/port0/line0', '1')
pause(0.001)
WriteDigitalChannel('dev1/port0/line0', '0')
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?

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Karl (Gast)
Datum:

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

Autor: Andi ... (xaos)
Datum:

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

Autor: Zorc (Gast)
Datum:

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

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Niels Keller (niels-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.