Forum: Digitale Signalverarbeitung / DSP / Machine Learning Z-Trafo - Koeffizienten nach Integer


von Bert S. (kautschuck)


Angehängte Dateien:

Lesenswert?

Hi,

Ich versuche einen diskreten Regler zu implementieren, welcher die 
Übertragungsfunktion wie im Anhang hat. Mein uC hat keine FPU (STM32 mit 
FPU sind im Moment praktisch alle nicht mehr Verfügbar) und ich möchte 
die Koeffizienten so anpassen, dass ich alles in Integer rechnen kann.

Im Moment ist der Eingang die Leistung in W und der Ausgang die 
Temperatur in °C und ich kann natürlich auch Eingang und Ausgang 
skalieren, aber nur bis auf Integers. Jemand eine Idee, wie ich die 
Koeffizienten skalieren kann, ohne das Regelverhalten zu beeinflussen 
und keine Floating Point Operationen ausführen muss?

von Walter T. (nicolas)


Lesenswert?

Bert S. schrieb:
> Mein uC hat keine FPU (STM32 mit
> FPU sind im Moment praktisch alle nicht mehr Verfügbar) und ich möchte
> die Koeffizienten so anpassen, dass ich alles in Integer rechnen kann.

Rechne erstmal in Float und guck, ob Deine Wiederholrate ausreicht. Die 
Chancen sind sehr gut, dass Du angenehm überrascht sein wirst - vor 
allem bei festen Koeffizienten (Horner-Schema).

BTDT.

Sollte es nicht reichen, kannst Du die float-Implementierung immer noch 
zum Gegentesten brauchen.

: Bearbeitet durch User
von Bert S. (kautschuck)


Lesenswert?

Walter T. schrieb:
> Rechne erstmal in Float und guck, ob Deine Wiederholrate ausreicht. Die
> Chancen sind sehr gut, dass Du angenehm überrascht sein wirst - vor
> allem bei festen Koeffizienten (Horner-Schema).

Ok, da hast du recht, ich probiere es mal aus. Es wäre aber schon 
spannend, wie man diese Koeffizienten skalieren kann. Habe bereits in 
Octave ein wenig ausprobiert, aber die a-Koeffizienten kann ich nicht 
skalieren.

: Bearbeitet durch User
von Löppt (Gast)


Lesenswert?

Bei einer Temperaturregelung ist die Wahrscheinlichkeit Recht hoch, dass 
es sich so geht, was ist denn deine Regelfrequenz?

Ansonsten zerlegt man auch gerne ein Filter in mehrere Teilfilter 
zweiter Ordnung. Diese lassen sich dann auch besser in Fixed Point 
umwandeln.

von A. S. (rava)


Lesenswert?

wenn man sich jetzt weit aus dem Fenster lehnt und Zähler und Nenner mit 
1000 erweitert?

von Wühlhase (Gast)


Lesenswert?

A. S. schrieb:
> wenn man sich jetzt weit aus dem Fenster lehnt und Zähler und Nenner mit
> 1000 erweitert?

Viel zu weit hergeholt, so kann das doch gar nicht gehen. ;)

von Walter Tarpan (Gast)


Lesenswert?

Mich würde ja erstmal interessieren, was aus der ursprünglichen
Regelung geworden ist.

Hat es funktioniert, suchst Du noch Probleme oder pausiert das Projekt?

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.