Fixed Step Simulink + Arduino

Gast #4071877
Lesenswert?
• ▲
▼
Hallo,

ich habe in Simulink ein Modell aufgebaut, was ich nun auf mein Arduino 
DUE mit einer Taktfrequenz von 84MHz implementieren will.


Wenn ich in Simulink Fixed-Step auf Auto setze, so sind die Ergebnisse 
noch recht ungenau.

Daher muss ich Fixed-Step sehr klein wählen.

Meine Frage daher:

Welche min. Fix Step Size ist erlaubt bzw. wie ermittelt man die oder 
erhält man die ?

Wenn die Frage euch Profis einfach erscheint, es tut mir leid, bin noch 
sehr neu in dieser Materie...
Gast #4072386
Lesenswert?
• ▲
▼
Hallo Dimitrie,

Der Fixed Step stellt deine Berechnungsschrittweite dar.
An was für einem Modell arbeitest du, bzw. wie umfangreich?

Die Frage wird deshalb wichtig, da dein Mikrocontroller in jedem 
Berechnungsschritt das komplette Modell berechnen muss. Du brauchst also 
möglicherweise viel mehr Prozessortakte um einen Schritt des Modells zu 
berechnen. D.h. die eingestellte Schrittweite im Simulink müsstest du 
dann über eine Ausführungsschleife mit der selben Schrittweite auch im 
Mikrocontroller ausführen.

Die gewünschte Genauigkeit deiner Berechnung legt, wenn du zeitabhängige 
Größen betrachten willst, auch die Schrittweite fest. Zusätzlich musst 
du natürlich auch die, für die Berechnung nötige Zeit, einplanen (der µC 
ist evtl. nicht so schnell wie dein PC).

Hoffe das hilft dir, ist schon eine Weile her bei mir.
Gast #4072516
Lesenswert?
• ▲
▼
Bodo schrieb:
> Der Fixed Step stellt deine Berechnungsschrittweite dar.
> An was für einem Modell arbeitest du, bzw. wie umfangrei

Hallo Bodo, danke für deine Antwort.

mein Modell ist aus einem sehr kleinen Stateflow-Chart mit vier 
Zuständen, wobei dort nur Variablen gesetzt werden, entweder ein oder 
aus.

Weiterhin sind vier PID-Regler implementiert im Zustandsraum.

Bodo schrieb:
> Der Fixed Step stellt deine Berechnungsschrittweite dar.

D.h., dass wenn ich 1e-6 als Schrittweite eingebe, jede Mikrosekunde das 
Modell neu berechnet wird, oder ? Woher weiß ich jedoch, ob das der µC 
schafft, oder nicht ?

Bodo schrieb:
> Du brauchst also
> möglicherweise viel mehr Prozessortakte um einen Schritt des Modells zu
> berechnen.

Kann man das irgendwie abschätzen wie viel Prozessortakte man benötigt?
Gast #4072562
Lesenswert?
• ▲
▼
Dimitrie schrieb:
> D.h., dass wenn ich 1e-6 als Schrittweite eingebe, jede Mikrosekunde das
> Modell neu berechnet wird, oder ? Woher weiß ich jedoch, ob das der µC
> schafft, oder nicht ?

Am PC nicht, da berechnet er so schnell wie er kann, aber er simuliert 
sozusagen die Schrittweite. Also wenn du 10 als Schrittweite angibst 
dauert es keine 10s für einen Schritt. Die Schrittweite ist ja ohnehin 
dimensionslos, d.h. für Simulink macht es erstmal keinen Unterschied 
welcher Wert da drin steht. Der ist nur wichtig, wenn du ihn in der 
Berechnung verwendest bspw. in einem Integral des PID.
Wenn du das tust, müsstest du ihn dann (damit das Integral richtig 
integriert -- richtige Integrationszeitkonstante) im µC aller 1µs 
ausführen.

Sicherlich gibt es Methode mit denen man die Berechnungszeit im µC 
abschätzen kann, leider bin ich da überfragt. Aber du kannst es einfach 
testen. Ich denke mit einer µs wirst du evtl. schon Schwierigkeiten 
bekommen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.