Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: S7 200 PID Alternative Regelung

  1. #1
    Registriert seit
    07.09.2012
    Beiträge
    36
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe momentan mal wieder ein spannendes Problem

    Und zwar hat sich herausgestellt das der S7-200 PID Regler ungeeignet für meine Reglstrecke ist.

    Aufgrunddessen arbeite ich zzt. an meinen eigenen Regler.

    Dazu möchte ich gerne folgende Funktion in MikroWin realisieren:

    Y = 2*X^3


    Momentan bin ich so weit:


    Ich bezweifle aber dass das so funktionieren wird.

    VD200 ist dabei das Störsignal.
    Zitieren Zitieren S7 200 PID Alternative Regelung  

  2. #2
    Registriert seit
    07.09.2012
    Beiträge
    36
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hat niemand eine Idee wie man diese Formel / Funktion in MikroWin ausrechnen kann ? :S

  3. #3
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von akrapovic Beitrag anzeigen
    ...
    Dazu möchte ich gerne folgende Funktion in MikroWin realisieren:

    Y = 2*X^3

    ...
    Warum benutzt Du den Logarithmus und rechnest das nicht so, wie es da steht?
    Also X*X*X*2:
    Code:
    Network 1 //Y=2*X^3
    LD     Immer_ein:SM0.0
    MOVD   #x:LD0, #y:LD4
    UENO
    *D     #x:LD0, #y:LD4
    UENO
    *D     #x:LD0, #y:LD4
    UENO
    *D     2, #y:LD4
    UENO
    NOT
    =      #Fehler:L8.0

  4. #4
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von akrapovic Beitrag anzeigen
    ...
    Und zwar hat sich herausgestellt das der S7-200 PID Regler ungeeignet für meine Reglstrecke ist.
    ...
    Darf man fragen, warum?
    Ohne Dir jetzt zu nahe zu treten zu wollen - Du stehst ja offensichtlich auch erst am Anfang Deiner Programmiererkarriere.
    Ich hab' bis dato den Regler auch noch nicht benutzt und würde da in ähnlicher Situation eher an meinen Einstellungen als an der Funktion des Reglers zweifeln. Wir haben auf der Arbeit PID-Regler in unseren Thermogeräten und ich weiß daher, das es immer eine kleine Kunst ist, die Dinger vernünftig einzustellen. Und da sind sogar schon Parametersätze vorgegeben.

  5. #5
    Registriert seit
    07.09.2012
    Beiträge
    36
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Tjo ich habe während meines Studiums Verfahren gelernt wie man die Regler einstellt, allerdings gibt die Simatic ja keine Messwerte aus, mit der man eine Regelstrecke exakt bestimmen könnte ....

    Desweiteren hat mein Fahrzeug einen DifferentialAntrieb, d.h zwei Räder mit ELektromotoren die unterschiedlich angesteuert werden und als Lenkung fungieren.

    Der PID-Regler schafft es einfach nicht die Störung auf 0 zu kompensieren, er regelt quasi "extrem".
    Außerdem habe ich eigentlich nur einen PI-Regler, da D-Anteil auf 0 ist.

    Wenn man sich die Funktion anschaut, die ich erstellt habe, dann sieht man einen sehr sanften Nullpunkt-Anlauf der Funktion, d.h. wenn man den Faktor vor der Funktion 2,3...10 * X^3 vergrößtert, dann erreicht man quasi eine sanfte Regelung.

    Dadurch erhoffe ich mir, dass die Elektromotoren so "sanft" um 0 geregelt werden, dass ein perfekter Geradeauslauf des Fahrzeugs möglich wird.

    Bei höheren Spurabweichungen wird dann natürlich auch die Reglung verstärkt.

    Mir kam diese Idee, weil das Einstellen des PIDs einfach nur mittels "trial and error"-Methode funktioniert ...

  6. #6
    Registriert seit
    07.09.2012
    Beiträge
    36
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Und ich rechne mit dem Logarithmus, weil das ein paar Rechenschritte spart. Das steht auch so in der Hilfe (s. meinem Screenshot).

    Da steht: " EXP (Y * LN(X)) "

    exp und ln kürzen sich natürlich, sodass dann da steht; X^Y

    3*[EXP(VD200*LN(3))] = 3 * [VD200^3]
    und genau so möchte ich das auch in MikroWin umsetzen, allerdings keine Ahnung wie .. :/

  7. #7
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Danke erstmal für die Erklärungen zum Regler.

    Aber ich versteh' immer noch nicht, warum Du nicht 3*X*X*X rechnest, wenn Du das doch eigentlich willst (warum jetzt übrigens mal 3 während es vorhin mal 2 war?). Also so wie oben im Bild. Das ist ja nun wirklich nicht der Riesenaufwand.

    PS: Ist ja nicht ^10, dann könnt' ich's verstehen. Wie Du siehst, sind es bei ^3 auch nicht mehr Operationen (PS: sogar eine weniger).

    Ist VD200 eigentlich eine Ganzzahl oder REAL? Bei Real bräuchtest Du natürlich die Multiplikation für REAL-Zahlen.

    PS: Blöde Frage von mir - wenn Du die LN-Funktion verwendest, muß es ja REAL sein. Ist Deine Störgröße VD200 auch wirklich im REAL-Format? Das Programm von Dir im ersten Post sieht ja ansonsten OK aus (PS: das mal 2 bzw. jetzt mal 3 am Ende fehlt noch). Ich würde nur nicht die ganzen Zwischenergebnisse in separate lokale Variablen speichern, denn die sind auch begrenzt.
    Und bei solchen Berechnungen würde ich auch immer auswerten, ob die Berechnung ohne Fehler durchgeführt wurde.

    So, noch mal beide Varianten, kannst ja mal die Ergebnisse vergleichen. Das ist ja bei REAL eh' immer etwas spannend .

    Code:
    ORGANIZATION_BLOCK MAIN:OB1
    TITLE=
    
    VAR
        y1:REAL;    // Ergebnis 1
        y2:REAL;    // Ergebnis 2
        done1:BOOL;    // Berechnung 1 erfolgreich
        done2:BOOL;    // Berechnung 2 erfolgreich
    END_VAR
    
    
    BEGIN
    
    Network 1 //Berechnung
        LD     SM0.0
        CALL   SBR0, VD200, LD0, LD4, L8.0, L8.1
    
    END_ORGANIZATION_BLOCK
    
    
    SUBROUTINE_BLOCK SBR_0:SBR0
    TITLE=
    
    VAR_INPUT
        x:REAL;        //Störgröße
    END_VAR
    
    VAR_OUTPUT
        y1:REAL;    //Stellgröße Var1
        y2:REAL;    //Stellgröße Var2
        done1:BOOL;    //Berechnung Var1 OK
        done2:BOOL;    //Berechnung Var2 OK
    END_VAR
    
    
    BEGIN
    
    Network 1 //Reset Done
        LD     SM0.0
        R      L12.0, 2
    
    Network 2 //Y=3*X^3 Var1 entspricht Y=X*X*X*3
        LD     SM0.0
        MOVR   LD0, LD4
        UENO
        *R     LD0, LD4
        UENO
        *R     LD0, LD4
        UENO
        *R     3.0, LD4
        UENO
        S      L12.0, 1
    
    Network 3 //Y=3*X^3 Var2 entspricht Y=EXP (3 * LN (X)) *3
        LD     SM0.0
        LN     LD0, LD8
        UENO
        *R     3.0, LD8
        UENO
        EXP    LD8, LD8
        UENO
        *R     3.0, LD8
        UENO
        S      L12.1, 1
    
    END_SUBROUTINE_BLOCK
    Geändert von hucki (20.10.2012 um 00:29 Uhr) Grund: Bild & Quellcode

  8. #8
    Registriert seit
    07.09.2012
    Beiträge
    36
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mittels Scale_I_to_R rechne ich mein bipolares Analogeingangssignal (+-32000) in ein REAL Datentyp um, sollte also passen.

    Die Rechnung in Netzwerk3 bei dir im Screenshot funktioniert laut meinem Rechner.

    In der Praxis werde ich dieses dann im Unterprogramm einfügen, sodass man in der MainFunktion den Faktor [1,2,3,..] *X^3 wählen kann und damit die Regelung beeinflussen kann.

    Hier habe ich es mal geplottet:



    das sind verschiedene Varianten, ich finde es damit einfacher die perfekte "Reglerkurve" zu finden, jedenfalls besser als P - I - D -Wert zu "erraten" ...

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 07.04.2013, 16:26
  2. PID Regelung mit PLCSim?
    Von ottopaul im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 14.05.2007, 19:41
  3. PID Heiz-Kühl Regelung
    Von tomtom222 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 09.11.2006, 08:08
  4. Regelung umsetzen 3-Punkt -> PID
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 09.12.2005, 17:46
  5. Frage zu PID regelung (FB58)
    Von Waelder im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 02.08.2005, 09:34

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •