www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik matlab + digitaler regler


Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, ich!

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ja freut mich zu höhren.

Kannst du mir hier ein paar tips geben wie du das realisiert hast?
oder ein entsprechendes matlab file?

gruss

Autor: gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit matlab-workspace ->simulink

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok... das ist ein konkretes problem.
wie lautet dein regel-algorithums?
um was für eine regelstrecke handelt es sich?

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wie lautet dein regel-algorithums?
normaler PI regler

>um was für eine regelstrecke handelt es sich?
um anzufangen und einarbeitung in matlab einfache PT1 strecke

Autor: gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nice... schau mal hier
Beitrag "Re: MATLAB (digitaler Regler)"
hilft dir das schon weiter?

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im einfachsten fall -> transfer funktion... wo du dann zähler, nenner 
nach doppelklick eingeben kannst (num, den)!

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: gabi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)...

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie kann ich selbst einen block programmieren?
bzw. wie kann ich dann die verbindung von simulink zu meinem 
programmcode herstellen?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau dir mal den "Embedded Matlab Function" Block an.

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Thomas

Das ist genau was ich gesucht habe, funktioniert bestens.

Besten Dank

Autor: tobias hofer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.
function y = pt1(u)

dt = 0.001;
tau = 0.02;

uc_1 = 0;

for k=1:length(u)
    y(k) = 1/tau*(u(k)-uc_1)*dt + uc_1;
    uc_1 = y(k);    
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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
persistent uc_1;
if isempty(uc_1)
     uc_1 = 0;
end

deinen Code solltest du aber auch nochmal überarbeiten, in deiner 
Embedded Matlab Function sind u und y Skalare.

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas

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

    dt = 0.001;
    tau = 0.02;

    persistent uc_1;
    if isempty(uc_1)
         uc_1 = 0;
    end
    
    y = 2*1/tau*(u-uc_1)*dt + uc_1;
    uc_1 = y;

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.