Machbar?

Gast #500179
Lesenswert?

Guten Morgen,

ich habe mit einem µC zwei digitale Regler programmiert.

1. Positionsregelung
2. Nachfahren einer Ventilkennlinie

Mein µC besitzt folgenden Speicheraufbau:

Program Flash 128KB
Data Flash 8KB
Program RAM 4KB
Data RAM 8KB
Program Boot Flash 8KB

Für die Ventilkennline speichere ich mehrere Sollwerte ab, die ich dann 
zyklisch durchlaufe. Das sind nur 20 float Werte. Das ist alles kein 
Problem.

Aber für die Positionsreglung muss ich mehrere Werte einlesen.
Bei einer Abtastzeit von 1ms sind das 1000 float Werte pro Sekunde.
Wenn ich nun also eine Fahrkurve von 10 Sekunden fahren will, sind das 
10000 Werte. Bei einem Data Flash von 8KB -> 65536 Bit, dass ganze 
geteilt durch ein float mit je 32 bit -> macht nur 2048 Werte. Bitte 
berichtigt mich wenn ich mich verrechnet habe. Ich kann die Fahrkurven 
auch nicht mit Funktionen oder Taylorreihen oder Fourierreihen 
nachbilden da diese nicht periodisch und völlig willkürlich sind.

Also muss ein größerer Speicher her. Das ist für mich neu, was kann man 
da machen? Im Datenblatt steht das ich 32MB extern adressieren kann. Ich 
habe auch von SD Kartenlesern gehört. Bitte schreibt mir eure Ideen.
Gast #500187
Lesenswert?

Hat dein uC überhaupt eine FPU? Wenn nein dann unbedingt auf integer 
skalieren! Und glaubst du wirklich, dass es was bringt mit jedem Sample 
auch nen neuen Sollwert vorzugeben? So schnell kann die Position eh 
nicht angefahren werden...
Gast #500257
Lesenswert?

Trotzdem glaube ich nicht, dass 1000 neue Sollwertvorgaben / Sekunde 
Sinn machen. Solche Sachen am besten vor der Implementierung in Simulink 
simulieren. Ich weiß ja nicht, um was für ein System es sich handelt, 
aber vielleicht tuts ja auch ne kleinere Abtastrate.
Hast du denn schon ein Modell der Strecke? Ist der Regler schon 
implementiert und kalibriert?
Gast #500263
Lesenswert?

Hallo Thomas,

also die Übertragungsfunktion für die Strecke ist wie folgt:

Drehzahl

G1(s)= 350/(0.000234*s^2+0.0253*s+1)

Position

G2(s)=G1(s)*5/60*1/s

Du hast ja recht ich könnte auch auf 10ms hochgehen, aber trotzdem hab 
ich dann immer noch ein Speicherproblem.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren