Forum: Mikrocontroller und Digitale Elektronik Fixed Step Simulink + Arduino


von Dimitrie (Gast)


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...

von Dimitrie (Gast)


Lesenswert?

Kann keiner helfen bzw. hat keiner Erfahrungen damit ?

von Bodo (Gast)


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.

von Dimitrie (Gast)


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?

von Bodo (Gast)


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.

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.