-> Hier kostenlos registrieren
Guten Abend Leute!
Ich muss in Twincat 2.11 eine Kraftregelung implementieren. Ich habe mir die Controller Toolbox besorgt, darf diese aber noch nicht gebrauchen (Studentenprojekt). Bis jetzt habe ich das System identifiziert und damit einen Regler ausgelegt, welchen ich dann mit Matlab in einen diskreten Regler umgewandelt habe, sodass man ihn dann in Twincat implementieren könnte. Die Frage ist eigentlich ziemlich klein und für Euch wahrscheinlich einfach --> Das Fett gedruckte ganz unten
Der Regler sieht wie folgt aus:
5.293 z + 89.79
---------------
z^2 + 72.58 z
Ich habe ihn dann wiederum so umgeformt, dass ich ihn in Twincat implementieren könnte.
a*z+b a*z^-1+b*z^2
C(z) = ----------- = -----------------
z^2+c*z+d 1+c*z^-1+d*z^2
u(t) = Stellgrösse
e(t) = Regelfehler
y(t) = aktuelle Kraft (Kraftsensor)
a*z^-1+b*z^2
u(t) = C(z)*e(t) = ----------------- *e(t)
1+c*z^-1+d*z^2
(1+c*z^-1+d*z^2)* u(t) = (a*z^-1+b*z^2)*e(t)
u(t)+c*u(t-1)+d*u(t-2) = a*e(t-1)+b*e(t-2)
u(t) = -c*u(t-1)-d*u(t-2)+a*e(t-1)+b*e(t-2)
Mein Lösungsvorschlag wäre folgender:
u(t-1), u(t-2) sind vorige Werte der Stellgrösse (Motorstrome Linearantrieb LinMot)
e(t-1), e(t-1) sind vorige Werte des Regelfehlers (Differenz zwischen Kraftsensor und gewünschter Kraft)
das soll dann in TwinCat irgendwie so aussehen:
u(t) = -c*u(t-1)-d*u(t-2)+a*e(t-1)+b*e(t-2)
e(t) = r(t)-y(t)
u(t-2) = u(t-1)
u(t-1) = u(t)
e(t-2) = e(t-1)
e(t-1) = e(t)
Wie Ihre sehen könnt, geht es darum die die älteren Werte mit den neueren zu überschreiben...
Kann mir jemand helfen?! Ich schaffe es einfach nicht, das in Twincat zu realisieren:/
Dank schon mal im Voraus
Ich muss in Twincat 2.11 eine Kraftregelung implementieren. Ich habe mir die Controller Toolbox besorgt, darf diese aber noch nicht gebrauchen (Studentenprojekt). Bis jetzt habe ich das System identifiziert und damit einen Regler ausgelegt, welchen ich dann mit Matlab in einen diskreten Regler umgewandelt habe, sodass man ihn dann in Twincat implementieren könnte. Die Frage ist eigentlich ziemlich klein und für Euch wahrscheinlich einfach --> Das Fett gedruckte ganz unten

Der Regler sieht wie folgt aus:
5.293 z + 89.79
---------------
z^2 + 72.58 z
Ich habe ihn dann wiederum so umgeformt, dass ich ihn in Twincat implementieren könnte.
a*z+b a*z^-1+b*z^2
C(z) = ----------- = -----------------
z^2+c*z+d 1+c*z^-1+d*z^2
u(t) = Stellgrösse
e(t) = Regelfehler
y(t) = aktuelle Kraft (Kraftsensor)
a*z^-1+b*z^2
u(t) = C(z)*e(t) = ----------------- *e(t)
1+c*z^-1+d*z^2
(1+c*z^-1+d*z^2)* u(t) = (a*z^-1+b*z^2)*e(t)
u(t)+c*u(t-1)+d*u(t-2) = a*e(t-1)+b*e(t-2)
u(t) = -c*u(t-1)-d*u(t-2)+a*e(t-1)+b*e(t-2)
Mein Lösungsvorschlag wäre folgender:
u(t-1), u(t-2) sind vorige Werte der Stellgrösse (Motorstrome Linearantrieb LinMot)
e(t-1), e(t-1) sind vorige Werte des Regelfehlers (Differenz zwischen Kraftsensor und gewünschter Kraft)
das soll dann in TwinCat irgendwie so aussehen:
u(t) = -c*u(t-1)-d*u(t-2)+a*e(t-1)+b*e(t-2)
e(t) = r(t)-y(t)
u(t-2) = u(t-1)
u(t-1) = u(t)
e(t-2) = e(t-1)
e(t-1) = e(t)
Wie Ihre sehen könnt, geht es darum die die älteren Werte mit den neueren zu überschreiben...
Kann mir jemand helfen?! Ich schaffe es einfach nicht, das in Twincat zu realisieren:/
Dank schon mal im Voraus