|
|
Laufzeitoptimierung: Timermodel eines Mikrocontrollers |
|
Atrun92 |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 12.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.01.2016, 09:09
Titel: Laufzeitoptimierung: Timermodel eines Mikrocontrollers
|
|
|
|
|
Guten Morgen Zusammen,
Ich benötige in Simulink ein Modell eines einfachen Timers zur Erzeugung eines PWM-Signals.
Dieser erhält zu Beginn einer PWM-Periode zwei Vergleichswerte a und b(Wertebereich (uint32) 0-10000).
Die Vergleichswerte werden mit der Zeitbasis verglichen. Wenn der erste Wert erreicht wird soll das Signal gesetzt, beim zweiten Wert resetet werden.
In Simulink habe ich dies über zwei Vergleichsoperatoren implementiert, welche das Signal a bzw. b mit dem Block "Repeating Sequence", welcher pro PWM-Periode(100µs) von 0 bis zum PWM-Endwert(10000) läuft, vergleichen.
Diese Signal gehen dann auf den setzt bzw. Rücksetzteingang eines S-R FlipFlops.
(Bild im Anhang)
Dies funktioniert auch soweit, jedoch musste ich hierzu eine Sample time von 1e-8(Mikrocontrollertakt) für die Vergleichsoperatoren verwenden, damit diese jeden "Treffer" erkennen.
Leider wirkt sich diese hohe Abtastrate auf die Laufzeit des Modells aus. Ist es möglich dies mit einer variablen Schrittgröße zu implementieren, sodass nur in dem Bereich in dem der Vergleichswert liegt mit 1e-8, abgetastet wird?
Über Hilfe und Anregungen wäre ich dankbar
Grüße
Beschreibung: |
|
Download |
Dateiname: |
Timer-Modell.PNG |
Dateigröße: |
20.17 KB |
Heruntergeladen: |
349 mal |
|
|
|
|
|
SimulantX |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.01.2016, 13:38
Titel:
|
|
Mir würde jetzt einfallen, dass Du die Zeit nicht als diskrete Indizes modellierst, sondern als kontinuierlich, die PWM durch herkömmliche Diskontinuitäten darstellst und dann einen variable-step-solver verwendest. Dann müsste er pro Periode nur zweimal in der Nähe der Schaltpunkte die step-größe reduzieren und noch einmal am Anfang für jede Periode um die Sollwerte zu bestimmen. Aber das ist nur so geraten.
|
|
|
Atrun92 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 12.01.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.01.2016, 14:22
Titel:
|
|
Vielen Dank
Habe es mittlerweile, wie von dir Vorgeschlagen mit dem variable-step solver + dem Block "Intervall Test Dynamic" als Ersatz für die Vergleichsoperatoren hinbekommen.
Grüße
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|