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.
> Mein µC besitzt
Schön für dich. Und wir sollen anhand dieser Daten nun erraten, was das
für ein Typ ist?
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...
Was soll float ? Das sollte man am besten vermeiden. Zum Einen weil der dynamische Bereich eh nicht gebraucht wird, zum Anderen haben integer derselben Breite eine höhere Auflösung. P.
Hallo Thomas, das stimmt die Position kann nicht so schnell angefahren werden, aber sie kann schneller reagieren.
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.