matlab + digitaler regler

Gast #539634
Lesenswert?
• ▲
▼
Hallo

Gerne würde ich einmal wissen wie man am besten einen digitalen PI 
Regelalgorithmus in Maltlab testen kann.

Und zware möchte ich den programmierten PI-Regler mit der entsprechenden 
Strecke in Matlab simulieren um die Regelparameter einstellen zu können.

Ideal wäre es wenn man für die Strecke nicht extra eine DGL austellen 
müsste und die diskret durchrechnen sondern die Matlab Befehle wie TF() 
usw brauchen könnte.

Hat jemand von euch schoneinmal so etwas realisiert?
Gast #539651
Lesenswert?
• ▲
▼
Hallo Gabi

Ehrlich gesagt eine nicht sehr hilfreiche Antwort!
Ich verstehe nicht so recht was du mit diesen Antworten bezweckst. Wenn 
du keine Auskunft geben willst, kannst dann musst du ja nicht zwingend 
Antworten.

Ich kenne Matlab und ich kenne Simulink. Mir ist aber nicht klar wie ich 
in Simulink einen Regel-Algorithmus einbinden kann, das war ja meine 
Frage. Dazu wäre ich froh ein paar tips oder bsp. zu bekommen.

Gruss Tobias
Gast #539672
Lesenswert?
• ▲
▼
Danke für den Link. Was ich jetzt noch vermisse wie binde ich meinen 
algorithmus den ich ja programmiere in das simulink model(anstelle der 
simulink blöcke) ein?

Es gibt sicherlich eine möglichkeit einen Simulink Block selbst zu 
erstellen der dann meine programmierte funktion aufruft.
Gast #539681
Lesenswert?
• ▲
▼
meine idee:

in matlab programmiere ich den pi-regler gleich wie ich den in meinem 
zielsystem prozessor porgrammieren würde.
das ist ja eigentlich der sinn der ganzen geschichte.

in simulink arbeite ich mit den blöcken transferfkt. für die strecke 
oszilloskop für die ausgabe usw. damit muss ich in matlab weniger 
programmieren.

kann man diese module zusammenschalten wie ich mir das vorstelle? wenn 
ja wie?
Gast #539861
Lesenswert?
• ▲
▼
du kannst mit gedrückter linker maustaste von den ausgängen der blöcke 
verbindungen zu den eingängen anderer blöche ziehen (abzweigungen mit 
zusätzlich gedrückter strg-taste)... kannst dir dann beliebige 
regelkreise aufbauen.
im einfachten fall:
sollwert -> summierstelle -> regler -> strecke -> rückkopplung auf 
summierstelle (vorzeichen beachten)...
Gast #539940
Lesenswert?
• ▲
▼
Hallo

Nun bin ich ein bisschen am Üben. Das erste Beispiel Programm sollte ein
einfaches RC-Glied sein das ich wie folgt in die Funktion PT1 
programmiert habe.
1
function y = pt1(u)
2

3
dt = 0.001;
4
tau = 0.02;
5

6
uc_1 = 0;
7

8
for k=1:length(u)
9
    y(k) = 1/tau*(u(k)-uc_1)*dt + uc_1;
10
    uc_1 = y(k);    
11
end

uc_1 sollte in dieser funktion eingentlich gespeichert werden bis zum 
nächsten aufruf von Simulink. Das funktioniert jedoch noch nicht so 
richtig.

Hat jemand eine Idee wie ich das richtig realisieren kann?

Im Anhang das Simulink Model.
Angehängte Dateien:
Gast #540286
Lesenswert?
• ▲
▼
Hallo Thomas

Besten dank funtioniert, der Code für alles diese Interessiert
sieht folgendermassen aus:
1
function y = pt1(u)
2

3
    dt = 0.001;
4
    tau = 0.02;
5

6
    persistent uc_1;
7
    if isempty(uc_1)
8
         uc_1 = 0;
9
    end
10
    
11
    y = 2*1/tau*(u-uc_1)*dt + uc_1;
12
    uc_1 = y;

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