Regelungstechnik mit S7

Danielegger

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
kann vielleicht einer von euch auf eine einfache Art erklären wie z.B. ein PI-Regler auf eine S7 zu programmieren wäre?? Ich habe schon hunderte wilde Formeln gesehen und am Ende verstehe ich nur wie er eigentlich funktionieren sollte, nicht aber wie er programmiert wird. Ralf hat vor langer Zeit einen guten Beitrag dadrüber geschrieben, doch leider finde ich es nicht mehr bzw. der angegebene Link ist Tot.
Ein Programmbeispiel wäre 1000-Mal hilfreicherer als so viele abstrakte Eklärungen.
Super wäre es: Mathematische Formel + Programmbeispiel + Kurze Erklärung = :idea:

Vielen Dank im voraus
 
Danielegger schrieb:
Hallo Leute,
kann vielleicht einer von euch auf eine einfache Art erklären wie z.B. ein PI-Regler auf eine S7 zu programmieren wäre?? Ich habe schon hunderte wilde Formeln gesehen und am Ende verstehe ich nur wie er eigentlich funktionieren sollte, nicht aber wie er programmiert wird. Ralf hat vor langer Zeit einen guten Beitrag dadrüber geschrieben, doch leider finde ich es nicht mehr bzw. der angegebene Link ist Tot.
Ein Programmbeispiel wäre 1000-Mal hilfreicherer als so viele abstrakte Eklärungen.
Super wäre es: Mathematische Formel + Programmbeispiel + Kurze Erklärung = :idea:

Vielen Dank im voraus
Du kriegst jetzt kein 100%iges AWL.

Regelabweichung: deltax=Sollwert-Istwert.

Änderung der Differenz für D-Anteil:
ddeltax=deltax-deltax_alt, deltax_alt ist der Wert im vorigen Zyklus

isumme speichert den Wert des Speichergliedes im I-Zweig (sowie die Ladung eines Kondensators bei analoger Elektronik).

ta ist die Abtastzeit oder das Aufrufintervall, d.h. z.B. die Zeit zwischen zwei Aufrufen des Regler im OB35.

KP, KT, KD sind die Reglerparameter als Verstärkungen (nicht als Proportionalband und Zeiten ausgedrückt).

Der Wert der ISumme wird bei jedem Aufruf um deltax/ta erhöht.
iSumme:=iSumme+deltax/ta

Der Ausgangswert des Regler ist dann:
Y=KP*deltax + KI*iSumme +KD*delatx/ta

Um das in einen FC in AWL zu übersetzen, hast du die Eingangsparameter:
X REAL Istwet
W REAL Sollwert
TA REAL Abtastzeit
KP REAL Proportionalverstärkung
KI REAL Integralanteil
KD REAL Differentialanteil

den Ausgangsparameter:

Y REAL Stellgröße
sowie die Ein-/Ausgangsparameter (INOUT):

DXALT REAL Differenz im vorigen Zyklus
ISUMME REAL Speicherstand des Integrators

und die Lokalvariablen
DELTAX REAL Regelabweichung
DELTAX_TA REAL Regelabweichung/ta, weil das mehrmals gebraucht wird
ZSUMME REAL Zwischenspeicher

// Berechnung der Regelabweichung:
L W
L X
-R
T DELTAX

L TA
/R
T DELTAX_TA
//
// Aufsummieren des Integrator-Speichers, Akku hat DELTAX_TA:
//
L ISUMME
+R
T ISUMME
//
// Berechnung der I-Komponente, Akku hat noch ISUMME
//
L KI
*R
T ZSUMME
//
// Berechnung und Hinzufügen der D-Komponente:
//
L DELTAX_TA
L DELTAX_ALT
-R
L KD
*R
L ZSUMME
+R
T ZSUMME
L DELTAX
T DELTAX_ALT
//
// Berechnung und Hinzufügen der P-Komponente:
//
L DELTAX
L KP
*R
L ZSUMME
+R
T Y

BE

Ein paar Dinge, die häufig zusätzlich gemacht werden:
1. Die Ausgangsgröße "Stellgröße" kann begrenzt werden. D.h. ,sie würde mit einem oberen und unteren Grenzwert verglichen und bei Bedarf durch diesen ersetzt.
2. Wenn der Regelkreis nicht geschlossen ist (z.B. Drehzahlregler für Motor, Netzschütz abgefallen) wächst die ISUMME über alle Grenzen.
Dagegen hilft ein binärer Eingangsparameter REGLEFREIGABE. Solange er 0 ist wird ISUMME auf 0 gesetzt.
3. Als PID-Regler (KD>0) reagiert die Stellgröße mit einem Sprung auf eine Sollwertänderung, da der Sollwert in DELTAX eingeht.
Wenn das nicht gewünscht wird, kann man den D-Anteil stat aus der Änderung der Regelabweichung aus der Änderung des Istwerts bestimmen. Bei gleichbleibendem Sollwert kommt das auf das gleiche heraus.
 
Zurück
Oben