Forum: Digitale Signalverarbeitung / DSP / Machine Learning ist es üblich die Zeitkonstanten bei Echtzeit-Prog. wegzulassen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von jan (Gast)


Lesenswert?

Angenommen, man realisiert einen digitalen Regler. In den Formeln 
tauchen ja immer Zeitkonstanten bzw. Differenzen auf. Ich habe neulich 
gesehen, dass Zeiten bei einer Embedded-Programmierung immer auf die 
Anzahl der verstrichenen Zyklen bezogen wurde und die Umrechnung Anzahl 
Zyklen-->tatsächliche Zeit dann stattdessen automatisch in den 
Parametern des Reglers mit drin steckten. Man hatte also keine echten 
Verstärkungen mehr als Variablen... ist so eine Vorgehensweise üblich?

von Rolf M. (rmagnus)


Lesenswert?

Ich würde sagen, ja. Warum soll man das auch in jedem Zyklus nochmal neu 
umrechnen, wenn die Zykluszeit eh konstant ist?

von Walter T. (nicolas)


Lesenswert?

"Weggelassen" ist wohl das falsche Wort. Sie werden in die 
Laufzeitparameter (z.B. Ki, Kd) einberechnet.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Das Stichwort ist "Optimierung". ;)
In diesem Fall - Optimierung auf Rechenzeit.
Es gäbe noch andere Optimierungsarten - je nach Anforderung.

War die Implementierung noch in FLießkomma?
Dann wundere Dich nicht, falls Du mal einen Regler mit 
Festkommadarstellung siehst. :)

Hier habe ich mir mal den Spaß erlaubt, einen PID-Regler in 
Maschinensprache auf einen ATtiny10 zu spielen:
http://harerod.de/applications_ger.html#xmasball2012

Und so ein AVR hat eine Menge Rechenleistung, z.B. wenn ich an den LEM 
Bordcomputer denke... :D

von Ingenieur (Gast)


Lesenswert?

jan schrieb:
> ist so eine Vorgehensweise üblich?

Es ist das üblich, was die Konvention der Firma vorschreibt.

Wenn ein Regler im Zeitbereich entwickelt wurde, liegen ja Zeiten in 
Form von ms und 1/Tau vor. Die hat irgendjemand mal mit der Taktfrequenz 
in Verbdindung gebracht und die Zyklen ausgerechnet - nebst den dazu 
nötigen Korrekturgliedern, die auf die Diskretisierung Rücksicht nehmen.

und beides ist zu dokumentieren. Will man den Code flexibel, sollten das 
austauschare Konstanten in einem header file sein, welches dann 
zugeordnet wird.

Für sicherheitskritische Anwendungen schließen manche diese 
Flexibilisierung aus, um durch das Code-Review zu kommen, und bauen 
alles in den Code fest ein und orden das file der Regler-HW hart zu.

Jedes file muss dann eben händisch aktualisiert werden. Halte ich 
persönlich für overloaded.

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]
  • [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.