# Regelung im SPS-Zyklus ohne OB35-Aufruf



## Hartmut Lux (4 September 2006)

Hallo Leute, 

  da mir die Siemens-Regler für die S7 nie so recht gefallen haben, hab ich mir einen eigenen Baustein geschrieben mit folgenden Merkmalen:

  - PIDT1 verhalten, Aufruf im normalen Programmzyklus,
  - *kaum bemerkbare Zykluszeitbeeinflussung* *und* *keine sporadischen* 
    Erhöhungen wie beim OB35-Aufruf durch interne Berechnung der   

  Aufrufzykluszeit 
  - Bidirektional Stoßfreie Hand-/Automatikumschaltung
  - Verzögerung für D-Anteil Parametrierbar
  - einfache, deutschsprachige Schnittstelle
  - Ausgänge:   *Analog, 
  *positiv Pulsbreitenmoduliert, Genauigkeit wie CPU-Zykluszeit
  *negativ Pulsbreitenmoduliert, Genauigkeit wie CPU-Zykluszeit
      Alle werden einmalig pro CPU-Zyklus aktualisiert, sind daher feinstufig: 
   z.B. CPU-Zyklus 20ms u. Grundtakt 1s:Genauigkeit Pulsbreitenmoduliert 2%, 
    bei Pulssegen im OB35 mit 100ms wären es nur 10%!
  - Möglichkeit der Abschaltung von P-, I- und D-Anteil (bei I und D durch setzen auf 0)
  - geringer Speicherbedarf: FB 1000Byte und pro Instanz-DB bzw. Regler  

  132Byte d.h. viele Regler u. kleine CPU - kein Thema
  - auf selten genutzte Überwachungen für Grenzwerte wurde Verzichtet, da  bei Bedarf einfach zu programmieren.

  Der Aufruf sieht wie folgt aus

    CALL  "PID_Regler" , "DB_PID"
         Sollwert                            :=
         Istwert                             :=
         P_Verstaerkung                  :=
         I_Tn_s                              :=
         D_Tv_s                             :=
         DT1_Verzoegerung_s           :=
         P_Anteil_ein                       :=
         Regler_Hand                       :=
         Y_max                               :=
         Y_min                                :=
         Impulsabstand_ms               :=
         Impulsmindestdauer_ms        :=
         Y_Analog                           :=
         Y_Impuls_Positivbereich        :=
         Y_Impuls_Negativbereich      :=
         Handstellwert                     :=

  Was haltet Ihr davon, besteht Interesse, was haltet Ihr generell von den Siemens-Reglerbausteinen?


----------



## Ralle (4 September 2006)

Ich denke schon, daß Interesse besteht, wenn die einzelnen Parameter noch kurz erläutert sind, werden das einige mal ausprobieren wollen.


----------



## Hartmut Lux (4 September 2006)

*Kurz zu den Parametern und dem Regler*

*Klassischer Regler, Integrator ist sehr genau durch Trapezintegration,
interne Messung der Zykluszeit dient als Abtastbasis, Aufrufdifferenz von mehr als 2s (z.B. nach Spannungsausfall) führt Automatisch zum Reglerneustart
* 
*          P_Verstaerkung                  :=*              Verstäkungsfaktor (gain)
*          I_Tn_s                              :=                          *Nachstellzeit (integration time)
*          D_Tv_s                             :=*                         Vorhaltzeit (derivation time)
*          DT1_Verzoegerung_s           :=       *PT1-Verzögerung für D-Anteil zur Rauschunterdrückung
*          P_Anteil_ein                       :=                   *wenn false dient P-Verstärkung nur zur Berechnung von Tn bzw. Tv, der Regler kann also auch als nackter Integrator arbeiten
*          Regler_Hand                       :=*                   wenn "true" ist Y=Handstellwert
*          Y_max                               :=*                          Obergrenze Stellbereich
*          Y_min                                :=                           *Untergrenze Stellbereich
*          Impulsabstand_ms               :=           *Grunzyklus der Pulsbreitenmodulation
*          Impulsmindestdauer_ms        :=*    Mindestimpulsdauer (zum schonen der  Stellglieder z.B. bei Klappensteuerung auf/Zu)
*          Y_Analog                           :=                       *Stellwert, Reglerausgang
*          Y_Impuls_Positivbereich        :=   *Pulsbreitenmodulierter Ausgang, positiv wirkend
*          Y_Impuls_Negativbereich      :=*  Pulsbreitenmodulierter Ausgang negativ wirkend
*          Handstellwert                     :=*                 inout-Realwert für Hand, wird bei Regler_Hand:="false" geschrieben, bei Regler Hand:="True" gelesen und zum Ausgang durchgeschaltet (setzt zeitgleich den Intgrator auf den "stoßfreien" Startwert)


----------



## gravieren (5 September 2006)

*Hi*

*Hört sich gut an  *


*Ist dein PID  als **Seriell Additiv System programmiert  ?*

*Wie Parametriesiert du z.b.  NUR P-Regler  ?*


*Programmiersprache ?    AWL   ?   SCL  ?*




*Karl*


----------



## Hartmut Lux (5 September 2006)

Programmiert ist der Baustein in AWL. P-, I- und D-Anteil werden seperat berechnet und Später zusammenaddiert (bessere Beobachtbarkeit und Nutzung der Trapezintegration möglich).

P-Regler: D-Antei auf 0 (ganz normal) und I-Anteil auf 0 (Null wäre auch nicht definiert, weil unendliche Steigung des Ausgangsignals bei Regelabweichung).


----------



## gravieren (5 September 2006)

Hi

Hört sich gut an, kann man den testen  ?


Ach ja, hat er auch ein  AWU  falls ja, Typ 5  ?


(AWU  -->  Anti Wind Up Verfahren  )
(Typ 5 Neuberechnung des I-Anteils bei "Regler-Max-Anschlag")


Karl


----------



## Hartmut Lux (5 September 2006)

Der I-Anteil ist intern auf y-min/y_max begrenzt. Kann in Sonderfällen editiert werden da ich den Baustein bislang nicht geschützt habe.  Bin  daran interessiert,  daß eventuell  noch existente Fehler  durch Zusammenarbeit eliminiert werden (habe Ihn aber selber schon als PI-Regler ohne Probleme im Einsatz).   

Ich kann ihn Dir gerne zusenden, Weitergabe aber, außer für eigene Anlagen-Programme, bitte nur mit meinem Einverständnis.

Es gibt ihn in 2 Varianten: für die S7-300 unter Nutzung der Funtion  SFC1 zur Zykluszeitberechnung und für die S7-400 unter Nutzung des SFC64 (da nur bei der 400-er Steuerung mit 1ms Auflösung und ein Stellen des Datums bei dieser Funktion kein Reglerreset bewirkt).


----------



## Bender25 (8 September 2006)

Hat jemand jetzt schon Regler von Hartmut Lux im Einsatz??? Würd mich mal interesieren??? Wäre schön wenn jemand mal ein Feedback gibt.


----------



## Hartmut Lux (8 September 2006)

Hallo Bender, wenn Du möchtest sende ich ihn Dir zum testen zu. Das Programm ist  von der Schnittstelle her einfach zu händeln und der Regler  läuft robust. Laß mir einfach Deine Mailadresse zukommen. 

Bislang ist das Interesse im Forum mäßig weil viele Forumteilnehmer die Problematik der Siemens-Regler (viel Speicherplatz, sporadische Zykluszeitspitzen durch OB-Aufruf und sehr grobe Pulsbreitenmodulation) noch nicht kennen.


----------



## Bender25 (8 September 2006)

Sehr gerne. Email schicke ich dir per PN...


----------



## Markus (8 September 2006)

auch gerne!

markus@uhltronix.com

danke!


----------



## ducati (9 September 2006)

2 Anmerkungen

Anti Wind Up sollte meiner Meinung nach einsetzen, wenn der Reglerausgang ymin/ymax erreicht hat. Eine Begrenzung nur des I-Anteils ist nicht ganz korrekt.

Ist die Berechnung mittels Trapezformel noch korrekt wenn die Zykluszeiten variieren? 

achso, welche Reglerstruktur hast genommen?

ich hatte auch schon mal überlegt, mir n PI-Regler selber zu schreiben, hauptsächlich um mehrere Regler in ne S7-300 reinzukriegen. Aber aus Zeitmangel vertagt 

cu,
ducati


----------



## hubert (10 September 2006)

Hallo Hartmut Lux.

Würde in auch gerne Testen. Hört sich von der Schnittstelle recht viel versprechend an. Die Siemens PID Regler haben mir teilweise viel zu viele Einstellungen, die ich bei meinen Anlagen bis jetzt noch nicht gebraucht habe.

E-Mail: wittmann_h@web.de


----------



## Hartmut Lux (10 September 2006)

Hallo ducati,

dei Reglersrtucktur entspricht der von Dir aufgezeichneten. 

Sowohl I-Anteil als auch Reglerausgang sind intern auf Y-min/Y-Max begrenzt. Falls der Integrator auf Y-Max/Min steht beginnt sich der Reglerausgang, bei Vorzeichenwechsel der Regelabweichung, mit I-Anteil (Beschleunigt durch P-Anteil) von Vollausschlag lagsam wieder abzubauen.

Berechnung der Fläche eines Trapezes: ((Rechte_Seite+Linke_Seite)/2)*Breite, die Breite wird ja gemessen.

Meine Grüde für das Schreiben diesen Bausteines sind ähnlich die Deiner Gedanken, aber auch weil mir Siemens Pulssegen viel zu grobe Sprünge Liefert, mir die Sporadischen Zykluszeitspitzen im SPS-Programm überhaupt nicht passen.  Ein  Regler  im  Zyklus arbeitet unterm Strich schneller und genauer (da die Programmzeilen öfter bearbeitet werden).


----------



## ducati (10 September 2006)

Hi,

Beim optimalen Anti Wind Up wird der Integrator nicht gestoppt wenn der I-Anteil ymax erreicht hat, sondern wenn der gesamte Reglerausgang ymax erreicht hat, was durch den dazuaddierten P-Anteil ja eher eintritt. Des Weiteren gibts dann noch ausgefeiltere Anti Wind Ups siehe z.B. hier:

http://www.eit.uni-kl.de/litz/lehre...labor - Versuch 6.pdf#search=""anti wind up""

ab Seite 23,

Ansonsten wäre eine weitere schöne Zusatzfunktion die Ansteuermöglichkeit von sogenannten integrierenden Stellgliedern, ähnlich "CONT_S", also z.B. für Ventilantriebe mit 2 binären Eingängen für Auffahren bzw. Zufahren. Evtl. auch in einem zusätzlichen FB der "hinter" den Regler-FB geschaltet wird. Das würde ich z.B. öfter benötigen als die Pulsweitenmodulation Pulsegen.


cu, ducati


----------



## gravieren (10 September 2006)

Hallo ducati,


(Tread 12 --> Bilder Reglerstruckturen)

Beide Reglerstruckturen sind NICHT gleich !


Der linke Regler entspricht einem Additv-System.
Der rechte Regler einem Seriall Additiv-System (Siemens Regler FB41)


Auf dem rechten Bild sollte mann noch das "Kp-Rechteck" mit Kr=1 über das "1/Tn" darübersetzen.
(Läst sich leichter "lesen".


Karl


----------



## ducati (10 September 2006)

gravieren schrieb:


> Hallo ducati,
> 
> (Tread 12 --> Bilder Reglerstruckturen)
> 
> ...


 

Hi,

sie sind ungleich in dem Sinne, dass sie anders programmiert werden.
Aber dadurch dass in den "Kästchen" andere Koeffizienten drin stehen, können beide Strukturen ineinander umgerechnet werden. Mit den drunter stehenden Formeln.
Wenn die Koeffizienten richtig umgerechnet eingesetzt werden, ist die Funktion der beiden Strukturen identisch.

Warum soll sich das mit nem zusätzlichen P-Glied (Kr=1) besser lesen lassen ?

cu, ducati


----------



## gravieren (10 September 2006)

Hallo Hartmut

Ich habe mir deinen Regler angesehen.
(Nur Grob überflogen, Funktion NICHT getestet)



Im Netzwerk 1 wird enorm viel Rechenzeit vergeudet, die genaue
Anzahl der millisekunden (Systemzeit) zu berechen.
Ein möglicher überlauf wird auch berechnet/berücksichtigt.

Frage: Wozu benötigt du diese hohe "Auflösung" , bei einer Differenz grösser 2 Sekunden erzeugt du einen Regler-Reset.

Vorschlag: Auflösung nur soweithin berechnen wie nötig. 



-  Der Baustein hat KEINE möglichkeit zum Reseten (Grundstellung)



Da bin ich bereits bei Punkt 3   

     Netzwerk 7   Bei Aufrufunterschieden grösser 2 Sekunden erzeugst du  einen "reset". 

Mein Vorschlag, du baust einen Übergabeparameter ein, der z.b. Reset (bool) heißt. Beim Neuanlauf durch den Wiederanlauf-OB setzt du diesen auf 1 (reseten) .



Am Anti-Winds-up müsste noch gearbeitet werden. 
(Momentan Begrenzung)


Dem PWM würde ich separat in einen Baustein setzen.






Ergo:    Grosses Lob, die Richtung ist SEHR gut.
           Einige Design-Veränderungen dann ist er einsetzbar.


Frage: Programierung in SCL ist nicht angedacht ?
         Hintergrund: Verwendung durch geringe änderungen 
         auch für Wago-PLC . . . 



Karl


----------



## gravieren (10 September 2006)

Hallo Ducati

Vereinbarung: 
Ti =  Integrierzeit;
Td =Differenzierzeit = Kd = Differenzierbeiwert; 
T1 =Verzögerungszeit




Linker Regler:  (Seriell Aditiv)   
y(t)=Kr (1 + 1/Ti  t + Td/T1 e –t/T1)
y(t)=Kr (1+ t/Tn+ Tv/ T1 e –t/T1 ) mit

Wobei die: 

Nachstellzeit      Tn=  Ti
Integrierbeiwert  Ki = 1/Ti = 1/Tn
Vorhaltzeit         Tv =  Td = Kd





Rechter Regler: (Additiv)

y(t)=Kr + 1/Ti  t + Td/T1 e –t/T1
y(t)=Kr [1+ 1/(Kr*Ti)* t + Td/Kr * 1/ T1 e –t/T1 ]
y(t)=Kr [1+ t/Tn+ Tv/ T1 e –t/T1 ] mit

Wobei die:
Nachstellzeit      Tn =  Kr *Ti
Integrierbeiwert  Ki  = 1/Ti = Kr/Tn

Vorhaltzeit         Tv =  Td /Kr = Kd/Kr


Karl


----------



## gravieren (10 September 2006)

Hallo Hartmut


Wie "ducati" schon erwähnte gibt es verschiedene "Anti-Winds-Ups"



Typ 1: ohne Anti Wind Up 

Typ 2: AWH (Anti Wind Halt): Erreicht das I- System die Übersteuerung, dann wird es abgeschaltet. 

Typ 3: AWT (Anti Wind Tracking) 
Das Ausmaß der Übersteuerung wird derart rückgekoppelt (Tracking) auf das I- System , um das I- System wieder aus der Übersteuerung zu regeln. 

Typ 4: AWA (Anti Wind Adaptiv) : Das I- System wird erst unterhalb einer Schwelle sw von e eingeschaltet. Oberhalb der Schwelle wird nur ein P System verwendet.
Für e < sw I System eingeschaltet.
Für e > sw I System ausgeschaltet. 

Typ 5: AWR (Anti Wind Reset):Am Ende des PI Algorithmus wird geprüft ob das PI System übersteuert. Falls dies er Fall ist, wird der Anteil des I- Systems so berechnet, daß das PI- System gerade an der Übersteuerungsgrenze ist. 



Du verwendest etwa Typ 2. Je höher der "Typ" ist, dessto mehr Programieraufwand hast du.
Der Regler wird jedoch bei "Regleranschlag/Übersteuerung" stabiler, ein Einschwingen minimiert.

Im Worst-Case kann der Regler sogar eine Dauerschwingung verursachen. 


Karl


----------



## ducati (10 September 2006)

Oje,

jetzt sind wir wieder bei dem meiner Ansicht nach schwierigsten Problem der Regelungstechnik, nämlich den unterschiedlichsten Reglerstrukturen und den unterschiedlichsten Reglerparameterbezeichnungen. Da hab ich jetzt leider nich die Zeit Deine Überlegungen nachzuvollziehen.

Was ich mit meiner Posting in Thread 12 eigentlich wissen wollte ist, welche Reglerstruktur und welche Reglerparameterbezeichnungen implementiert sind. Da sich alle gängigen Verfahren zur Ermittlung der Reglerparameter eigentlich auf die rechte Struktur beziehen. Fatal wäre es, wenn die linke Struktur implementiert wäre, aber als Koeffizieten Kp, Tn, und Tv drin stehen. dann wird die Verwirrung komplett.
Die Antwort von Hartmut: "Programmiert ist der Baustein in AWL. P-, I- und D-Anteil werden seperat berechnet und Später zusammenaddiert" lässt nämlich genau diesen Schluss zu.
Deshalb würde der Regler trotzdem funktioniern, aber wenn dann die nach z.B. Ziegler/Nichols bestimmten Kp/Tn/Tv eingetragen werden kommt kein ordentliches Regelverhalten zustande, da ich die Werte ja noch umrechnen müsste.

also ich hoffe ihr klärt mich auf 

cu, ducati


Karl, ich glaube im Thread 19 hast Du links und rechts verwechselt

Links: additiv
rechts seriell additiv

hast Du ja auch im Thread 16 richtig geschrieben


----------



## gravieren (10 September 2006)

Hi ducati



> Karl, ich glaube im Thread 19 hast Du links und rechts verwechselt
> 
> Links: additiv
> rechts seriell additiv
> ...


Ups, erwischt !   
Ich stelle fest, du hast aufgepasst   .


Zum Thema PID-Regler: Kleine Optimierungen, "Anti-Winds-Up" Typ 5 integriert, diverse Otimierungen.  
(Wobei ich jedoch den Code NICHT auf Funktionalität geprüft habe)
Einbau von Baustein-Berenzungen (z.b. bei Wert I_Tn_s = 0.00000000001)
in NW6  Div annähnernd mit 0   --> Overflow  ? 


Vieleicht Prog. Hartmut in SCL  (IEC)  dann könnte ich dem Projekt viel abgewinnen.

Hintergrund, in der GLT ist Siemens NICHT durchzusetzen, in der Industrie 
jedoch nachezu unverzichtbar (Meine Persöhnliche Meinung).

Aktuelles Projekt: Klimaanlage, wegen Kosten der SPS und der Möglichkeit der Fernwartbarkeit mit Web-Interface wird auf den Wago-Contoller
gesetzt.
Ich benötige jedoch Code, der auf beiden "Systemen" läuft.
Unter S7 habe ich den "Standard PID" + "Modular PID"   den Program-Code
dieser Anlagen kann ich hierfür in den Müll werfen.

Quelltextoffener PID-Reger ...      wäre hierfür die Lösung.


Karl


----------



## ducati (10 September 2006)

gravieren schrieb:


> Hintergrund, in der GLT ist Siemens NICHT durchzusetzen, in der Industrie
> jedoch nachezu unverzichtbar (Meine Persöhnliche Meinung).
> 
> Aktuelles Projekt: Klimaanlage, wegen Kosten der SPS und der Möglichkeit der Fernwartbarkeit mit Web-Interface wird auf den Wago-Contoller
> gesetzt.


 

Naja ne SPS in der Gebäudetechnik (Heizung,Lüftung,Klima) einzusetzen ist ja eh nicht die beste Lösung. Es gibt genügend Anbieter die spezielle Systeme mit fertig konfiguriertem Anwendungsprogramm bieten, welches erstens preislich atraktiv sind und zweitens nur geringe Programmier/Inbetriebnahmezeiten benötigen.
Wenn Du mit ner SPS alle Optimierungsfunktionen die für ne Lüftungsanlage sinnvoll sind selbst programmieren willst dann wünsch ich Dir schon mal viel Spass die nächsten Monate. (Mal n Bedienhandbuch von nem ordentlichen Lüftungsregler durchlesen, dann weisst was ich meine)
Hier mal ne kleine Aufzählung von namhaften Anbietern (Reihenfolge ist keine Wertung): Siemens SBT (ehemals Landis+Steafa), Kieback+Peter, Riccius+Sohn, Priva, Samson, Honeywell/Centra...
Die Möglichkeit einer Leittechnik gibts von den Anbietern fast immer auch, und zu einem meist vernünftigen Preis.
Allerdings gehen meine Überlegungen zum Einsatz der PID von Hartmut in die selbe Richtung. Abundzu hat man in der Gebäudeautomation ne Sonderlösung wo man n bissl mehr Steuern muss. Dann wär ne S7-300 mit n par mehr PID-Reglern eine mögliche Lösung.

cu, ducati


----------



## gravieren (10 September 2006)

Hi ducati



> Naja ne SPS in der Gebäudetechnik (Heizung,Lüftung,Klima) einzusetzen ist ja eh nicht die beste Lösung. Es gibt genügend Anbieter die spezielle Systeme mit fertig konfiguriertem Anwendungsprogramm bieten, welches erstens preislich atraktiv sind und zweitens nur geringe Programmier/Inbetriebnahmezeiten benötigen.


Habe die auch eine TCP/IP-Schnittstelle.
Fernadministrierbar / Programierbar / Diagnostizierbar übers Internet ?

Preis für den Contoller ca. 400 Euro , 8 Ausgange 34 Euro, 8 Eingänge 28 Euro.   Erweiterbar auf 63 Module b.z.w 8 x 63 Module.
256 KB PLC-Speicher, 1,2 MB Anwenderspeicher / ftp-Speicher, Filesystem, SMS-Versand mit Siemens S35 oder SMTP-Server ....




> Hier mal ne kleine Aufzählung von namhaften Anbietern (Reihenfolge ist keine Wertung): Siemens SBT (ehemals Landis+Steafa), Kieback+Peter, Riccius+Sohn, Priva, Samson, Honeywell/Centra...


Siemens SBT bekannt, Biliothek ca. 400 Euro fast keine Eingriffsmöglichkeit /Anpassbarkeit im PLC,  Preis unrealistisch für GLT  (S7-300er Basis)
R+S  Anbindung nur über USSxx  KEINE offene Schnittstelle
Honeywell bekannt, werfen wir aktuell "raus", nur noch eine kleine Gruppe von Servicetechniker im Standort Nürnberg. Lange wartezeiten, keine Eingriffsmöglichkeit.


Regler sollte mit anderen Komunizieren könner, Aussentemperatur von unserer Wetterstation(Zentral), Jalusieen hochfahren bei Wind, Dachluken schliessen bei Sturm oder Regen...

Jedes Gebäude bräuchte z.b. eine Wetterstation, die Überprüfung müsste z.b. für 11 Gebäude erfolgen.   Wegebeleuchtung mit Dämerungsschalter.
Es soll Firmen geben, die haben bis zu 5 Dämmerungsschalter an einem Gebäude.

In der Urlaubszeit sollte die Heizung überprüft werden, Frostschutz, ...


"Verkabelung" erfolgt bei uns über GB LWL-Kabel.





> Die Möglichkeit einer Leittechnik gibts von den Anbietern fast immer auch, und zu einem meist vernünftigen Preis.


Offene System nach meiner Recherche bis jetzt Siemens und Wago (Böllhof ...    CoDeSys-Systeme )

Wago macht die "Drecksarbeit", Siemens WinCC der "Kappo". 





> Allerdings gehen meine Überlegungen zum Einsatz der PID von Hartmut in die selbe Richtung.


Ja, System-offen, je nach Preis und Leistung  (Wenn Programmunabhängig, z.b.  SCL  <--> ST )




> Abundzu hat man in der Gebäudeautomation ne Sonderlösung wo man n bissl mehr Steuern muss. Dann wär ne S7-300 mit n par mehr PID-Reglern eine mögliche Lösung.


Siemens hat SUPERTOLLE Regler, ausgetesten ...

Eine freie Wahl der verwendeten Hardware ist nach meiner Meinung unabdingbar.
So ne Art LINUX für SPSen  .




Karl


----------



## ducati (10 September 2006)

gravieren schrieb:


> Hi ducati
> 
> 
> Habe die auch eine TCP/IP-Schnittstelle.
> ...


 

Da wär glaub Priva was für Dich, alles vorhanden, offene Kommunikation über OPC, EIB, Modbus. Die kommen aus Holland, musst mal nachfragen, wer euer Ansprechpartner vor Ort ist.

www.privaweb.com

Preise sind nicht direkt vergleichbar, da durch grafische Programmierung die Leittechniksoftware kostenlos dabei ist (aber dann logischerweise die Hardware n bissl teurer). Auf alle Fälle gibts jede Menge Regelbibliotheken für HLK kostenlos.
Bin mit denen ganz zufrieden, n kleines Minus für die teilweise komische Übersetzung vom holländischen ins deutsche.

offene Leitsysteme für Gebäudeautomation ist äußerst selten. Die Vertriebsstrategie ist meist: erst ne Leittechnik verkaufen (die nur die eigenen Regler versteht) und dann müssen alle weiteren Regler vom selben Hersteller sein. Aber dafür ist ne nicht offene GLT meist auch preiswerter und speziell optimiert für das eine Fabrikat. zu R+S könnt ich Dir da näheres erzählen, aber net hier im Forum.

cu, ducati


----------



## Hartmut Lux (11 September 2006)

Hallo gravieren,

hier ist meine  Meinung zu einigen Deiner Kommentare,

*1)  dynamisches  Anti-Wind-Up Typ5:  Eine Dynamisierung des  Regelverhalten in den Stellbereichsgrenzen ist von Vorteil, wenn die Regelung so eingestellt werden kann, das das Stellglied bei laufendem Prozeß häufig bis in den Anschlag getrieben wird, d.h. bei Strecken, bei welchen die Reglerverstärkung sehr hoch  eingestellt werden kann.  
Bei  Strecken hoher Trägheit oder noch schlimmer  bei totzeitbehafteten Strecken, welche nahe der Stellbereichsgrenze betrieben werden,in der stört eine derartige Dynamiserung das  Regelverhalten und kann zu Instabilem Verhalten oder einer schlechten Auslastbarkeit eines Systems führen.
Programmieraufwand: wie Schuhe zubinden. Die Begrenzung des I-Anteils erfolgt erst nach Berechnung von P- und D-Anteil. Ich werde die Möglichkeit wohl als Kommentarzeilen in den nächsten Varianten mit vorsehen, aber nicht als Schnittstellenparameter (zu hoher Erklärungsaufwand). Soll jeder selbst entscheiden. Vorerst bleibt die gleichbleibende Dynamik über den Stellbereich.        

*2) Nachstellzeit von 10exp-10 s: Regler arbeitet instabil als Komparator, wer Unfug dran schreibt, soll Unfug bekommen. 
Ich sollte aber vielleicht den I-Anteil schon bei kleinen Werten abschalten und nicht erst bei Null, weil Rundungsfehler zu PC-Systemen so etwas auch verursachen können. 

*3) Berchnung der Systemzeit für Zeiten >2s wird für die Pulsbreitenmodulation genutzt, wo z.B. für Heizungssysteme ein deutlich längerer Grundzyklus eingestellt werden kann.

*4) SCL: Du kannst die  Quelle eventuell vom Simatic-Manager generieren lassen. Bin AWL-Programmierer, wer es anders haben will, kann es sich selber schreiben (womöglich noch analoge Berechnungen in FUP oder KOP malen?).

*5) Externer Reglerreset: erfolgt wenn man den Fuktionsaufruf >2s sperrt. Werde eventuell noch als 2.Möglichkeit ein Bit auf die Schnittstelle legen, muß mal überlegen.

*6) Pulsbreitenmodulierte Ausgänge: benötige ich öfter mal, bleiben im Baustein, muß man ja nicht nutzen. Regler für Integrierende Stellglieder: hab ich selten,  werde darüber nachdenken, wenn es zu meinen Problemen zählt.

Auf jeden Fall vielen Dank für die Einschätzung, Ich benötige zum Verbessern andere Meinungen.


----------



## Onkel Dagobert (12 September 2006)

Hallo Hartmut,



Hartmut Lux schrieb:


> ..da mir die Siemens-Regler für die S7 nie so recht gefallen haben, hab ich mir einen eigenen Baustein geschrieben..


Solchen Leuten wie dir habe ich meine ersten grauen Haare zu verdanken, und unserer Belegschaft eine ausgefallenene Weihnachtsfeier. Aber vielleicht schafftst du es ja wirklich, einen neuen, verbesserten PID-Regler zu veröffentlichen. Entschuldige meinen Sarkasmus aber es ist nicht aus der Luft gegriffen. Ich bin immer froh wenn ich an eine Anlage komme, in der Siemens-Regler eingesetzt wurden. Der PID-Regelalgorithmus ist schon seit einigen Jahrhunderten bekannt.

@ducati


ducati schrieb:


> Naja ne SPS in der Gebäudetechnik (Heizung,Lüftung,Klima) einzusetzen ist ja eh nicht die beste Lösung.


Warum nicht? Du kannst mit geschickter Programmierung einer S7-315 die Klimaanlagen einer halbe Stadt regeln.



ducati schrieb:


> ..Es gibt genügend Anbieter die spezielle Systeme mit fertig konfiguriertem Anwendungsprogramm bieten, welches erstens preislich atraktiv sind..


Preislich attraktiv? Wirklich? Kannst du dazu ein Beispiel nennen.



ducati schrieb:


> ..sind und zweitens nur geringe Programmier/Inbetriebnahmezeiten benötigen...


Soweit gebe ich dir erst einmal Recht. Allerdings lässt sich mit einem geschickten Konzept, einschließlich HMI-Anbindung, mit einer SPS auch einiges machen. An die Programmier/Inbetriebnahmezeiten einer DDC komme ich mit einer S7 noch nicht so ganz ran, dafür bin aber mit einer S7 unendlich flexibel.



ducati schrieb:


> ..Wenn Du mit ner SPS alle Optimierungsfunktionen die für ne Lüftungsanlage sinnvoll sind selbst programmieren willst dann wünsch ich Dir schon mal viel Spass die nächsten Monate. (Mal n Bedienhandbuch von nem ordentlichen Lüftungsregler durchlesen, dann weisst was ich meine)..


Es gibt fast nichts, was mit einer SPS nicht zu realisieren wäre. Es kommt diesbezüglich auch weniger auf die Programmierkentisse an, sondern vielmehr auf Erfahrungswerte und Sachverstand.



ducati schrieb:


> ..Hier mal ne kleine Aufzählung von namhaften Anbietern (Reihenfolge ist keine Wertung): Siemens SBT (ehemals Landis+Steafa), Kieback+Peter, Riccius+Sohn, Priva, Samson, Honeywell/Centra...


Siemens SBT (ehemals Landis+Steafa) tut sich sehr schwer, jüngste Generationen sind bereits nicht mehr lieferbar. Die anderen Hersteller werden vermutlich flexibleren Systemen in den nächsten Jahren auch weichen müssen. Zumindest was größere Anlagen betrifft.



ducati schrieb:


> ..Die Möglichkeit einer Leittechnik gibts von den Anbietern fast immer auch, und zu einem meist vernünftigen Preis.,


Zu einem vernünpftigen Preis? Wo? Man sollte bei solchen Dingen auch stets die Aufpreise für Fernwartung, Archivierung etc. berücksichtigen.

Ich stehe jetzt vermutlich mal wieder ein wenig als Querschiesser da. Dennoch bin ich an diesem Thema interessiert. Ansonsten hätte ich mir nicht diese Mühe gegeben  .


Gruß, Onkel


----------



## Hartmut Lux (13 September 2006)

Hallo Dagobert, jedem seine Meinung. Ich habe aber bereits meine Gründe für den eigenen Algorithmus beschrieben. 

Zu Siemensreglern: ich habe bei Siemensreglerkarten (FM455), welche nach einiger Laufzeit zu regeln aufhörten, selber schon Firmwareupdates gemacht. Ich habe in einem Programm bei dem die Programmierer mit Siemens Modular-PID-Control nicht klar kamen, einen Regler gesehen, welchen sie minütlich resettet haben! Ich weis das Standard PID-Control in bei einfachen Anwendungen in einer 312-er CPU soviel Arbeitsspeicher frist, das sich das Nachdenken über Alternativen lohnt (ich kenne den Quellcode nicht, denke aber Siemens will möglichst große Steuerungen verkaufen, verständlicherweise). 

Wichtig ist, daß das Programm bei guter Bedienbarkeit im Anschluß zuverlässig läuft und was ich da mit und ohne Siemensregler schon gesehen habe...:???:

Es geht hier in errster Linie darum, die programmiertechnischen Grenzen bei gegebener Hardware weiter rauszuschieben und nicht darum Dich Deiner Instandhalterruhe zu berauben.


----------



## Onkel Dagobert (15 September 2006)

Hallo Hartmut,



Hartmut Lux schrieb:


> ...jedem seine Meinung...


Danke!
Ok, jeder macht seine eigene Erfahrungen. Verstehe mich nicht falsch, ich will dich oder andere auch keinesfalls davon abhalten, eigene Ideen um zu setzen. Im Gegenteil, Innovation ist eine sehr wichtige Sache in unserem Geschäft.


Hartmut Lux schrieb:


> ...ich habe bei Siemensreglerkarten (FM455), welche nach einiger Laufzeit zu regeln aufhörten...


Hast du die Ursache gefunden?


Hartmut Lux schrieb:


> ...Ich habe in einem Programm bei dem die Programmierer mit Siemens Modular-PID-Control nicht klar kamen, einen Regler gesehen, welchen sie minütlich resettet haben!...


An wem wird das wohl gelegen haben?


Hartmut Lux schrieb:


> ...Ich weis das Standard PID-Control in bei einfachen Anwendungen in einer 312-er CPU soviel Arbeitsspeicher frist, das sich das Nachdenken über Alternativen lohnt...


Gut, mit 16kB RAM kann man keine großen Sprünge machen, da neben den eigentlichen Reglern meist noch etwas Beiwerk notwendig ist. Ich spreche natürlich von den "einfachen" Siemens-Reglern (FB41/42/59).


Hartmut Lux schrieb:


> ...Wichtig ist, daß das Programm bei guter Bedienbarkeit im Anschluß zuverlässig läuft und was ich da mit und ohne Siemensregler schon gesehen habe...:???:


Und nicht zu vergessen, eine gute und möglichst flexible Anbindung an ein HMI-System. Das erspart sehr viel Zeit beim Programmieren und auch sehr sehr viele HMI-Variablen (Tags). Ich habe in meinem System einen universellen Datensatz (bzw. mehrere), welche ich im HMI-System nur einmal anlege und in der Steuerung anhand der Bildnummer multiplexe. Das erspart enorm viel Zeit und Nerven bei der Fehlersuche, da Verwechslungsfehler auszuschliessen sind (manche findet man nie, man denke an Schaltzeiten!). In diesen Datensätzen sind neben den Reglerdaten auch Schaltzeitpaare, Handbedienungen etc. vorhanden, also eine recht große Anzahl von Variablen. Es sind über hundert, wenn man sie nicht braucht lässt man sie im Bild einfach weg. Diese Datenstruktur ist universell für verschiedene Reglerbausteine verwendbar. Dadurch ist eine enorm schnelle und absolut fehlerfreie (HMI<-->SPS) Projektierung möglich. Pro OB1-Zyklus bearbeite ich jeweils nur einen "Regler-Versorgungsbaustein", jedoch den, der im Bild angewählt ist wegen der Bedienbarkeit zyklsch. Die eigentlichen Regler werden im OB35 etc. aufgerufen. Die Bausteinparameter im OB35-Aufruf beschränken sich auf die Peripherieanbindung. Alle anderen Parameter werden über die Instanz gehandelt. Nur mal so als Anregung.


Hartmut Lux schrieb:


> ...Es geht hier in errster Linie darum, die programmiertechnischen Grenzen bei gegebener Hardware weiter rauszuschieben und nicht darum Dich Deiner Instandhalterruhe zu berauben.


Ich bin kein Instandhalter. Ich bin die meiste Zeit mit Planung, Programmierung, und Organisation beschäftigt, in der Haustechnik, Automatisierung und manchmal auch in der Energieversorgung. D.h., sofern mir die Zeit dazu bleibt und ich nicht gerade hinter einfallsreichen PID-Programmieren reinemachen muss. Ich meine natürlich nicht dich, aber ich habe diesbezüglich meine Erfahrung, welche ich nicht näher erläutern möchte.


@all
Was haltet ihr eigentlich von der HLK-Bibliothek welche von Siemens angeboten wird? Ich bin mir sicher, Interessierte unter euch haben sie schon angesehen.


Gruß, Onkel


----------



## gravieren (15 September 2006)

Hi Onkel Dagobert


```
@all
Was haltet ihr eigentlich von der HLK-Bibliothek welche von Siemens angeboten wird? Ich bin mir sicher, Interessierte unter euch haben sie schon angesehen.
```
Habe mir die HLK zugelegt.

Man hat keine Zugriffsmöglichkeiten mehr.
Ich dachte, man wurde diverse Einzelmodule bekommen, sinvoll zu verändern ...

Leider ist das Irgendwie eine "Kompakt-Einheit", bei der man nur größtenteils Diverse Bits setzen kann.

Ebenso alle mit Know-How-Protekt.

Das Handbuch kan man sich "frei" runterladen.


P.S.  Bei mir kam es nur im Regal zum "Einsatz".
       Die Standard und Modular-REgler sind bei uns zu mass im Einsatz.
       Die Lizenzkosten pro CPU sind auch nur sehr gering.

       LEIDER wiedermit Know-How-Protect !


Karl


----------



## mr.binford (18 September 2006)

Hi Hartmut,

ich finde es gut, dass du dir deinen eigenen Baustein schreibst, wobei ich auch Dagobert recht geben muss, mann muss das Rad nicht immer neu erfinden, es wird immer wieder rund, und mann was das es tut, aber manchmal ist es eben notwendig.

Ich bin gerade drann mir einen auf meine Aufgaben dienlichen OB 35 zu basteln, mit aufruf FB41. Mir fehlen funktionen wie Einfrieren des Ausgangs und automatische Nachregelung bei Überregelung. Ich habe bisher mit Robotern  gekämpft und bin mich gerade in das Thema Regelung/Dosieranlagen mit S7 am einarbeiten und habe noch keine Erfahrungen bezüglich Taktproblemen un so. 

Warum muss der FB in OB35 aufgerufen werden, bzw. was pasiert wenn ich in zyklisch aufrufe?

Wo kann ich mich noch schlau machen in Bezug auf Regeltechnik und Probleme die mich Erwarten könnten.

Vieleicht kannst du mir ja deinen Baustein zukommen lassen,


----------



## Hartmut Lux (19 September 2006)

Hallo Mr. Binford,

Folgendes kurz  zu deinen Problemen: Einfrieren des Reglerausganges kannst Du durch eine kurzzeitige, stoßfreie Handumschaltung erreichen.

OB35 -Aufruf wird zur exakten Zeitberechnung von Tv/Tn benötigt (klappt eventuell auch wenn man an den FB41 von außen die gemessene Zykluszeit dranschreibt).

Jeder Regler  regelt normalerweise auch bei Übersteuerung nach, diesen Punkt von Dir verstehe ich nicht. Eventuell hast Du ein Problem mit den Sollwerten und mußt du hier einen geeigneten, korrigierenden Generator  (Rampe, Korrektur, Fehleraufschaltung o.ä.) ransetzen.

Außer von Karl (gravieren) fehlen mir noch die Rückinformationden der anderen Forummitglieder, welchen den Baustein testen wollten. Ich brauche diese, um meinen Baustein in eine Endform zu bringen, welche den allgemeinen Ansprüchen gerecht wird und um zu verhindern, daß das neuerfundene Rad irgendwo noch eckig ist. Ich  werden auf jeden Fall die Möglichkeit eines externen Neustarts und die Möglichkeit, eines zuschaltbaren, dynamischen Antiwindupmechanismus mit reinbringen eventuell auch einen Break-Mechanismus für kurzzeitige Prozeßunterbrechungen (um bei trägen Reglern mit dem letzten erreichten Wert wieder zu starten).
Ich werde den Baustein vorerst nicht mehr weitereichen, weil ohne Feedback macht das für mich keinen Sinn.


----------



## mr.binford (19 September 2006)

Danke für die Erklärung. Also könnte ich auch einen Regel FB schreiben und muss sichersteleln (evt. durch Zykluszeitkontrolle/lesen), dass der BAustein immer im gleichen zyklus aufgerufen wird.

z.B mit SFC Zykluszeit lesen Adieren bis 50ms und bei grösser 50ms aufrufen und zähler löschen?

Was ist mit Einlesen der PEW? Nimmt das einlesen in DB gegenüber dem direkten arbeiten mit nde PEW einfluss auf die Zykluszeit bzw. dem Regelverhalten?


----------



## kiestumpe (19 September 2006)

Hallo SPS-Gemeinde,

ich muss Onkel Dagobert recht geben und halte auch nicht sehr viel davon, diesen Regler selbst zu programmieren, kann man doch mit einer Rampenfunktion bereits einiges entschärfen.
Braucht man eine schnelle Regelung (Zykluszeiten ms oder darunter, muss man eh von der SPS weg und z.B. auf DSP's ausweichen, oder entsprechende Karten kaufen)
Ich bin eher der Ansicht, den FB41 nach aussen etwas abzuspecken, ihn in eine gängige Schnittstelle zu verpassen.
Interessant finde ich von Beckhoff auch die Lösung, daraus einen adaptiven Regler zu machen, der sich selbst parametriert.
Wir haben damit schon schwierige Regelstrecken in den Griff bekommen.

Oha - hab grad gesehen, dass der FB58 "TCONT_CP" für Temperaturegelung sich selbst auch tunen kann. Wer hat damit schon Erfahrung gesammelt?


Gruss
Frank


----------



## XL (20 September 2006)

*Kommentar zum PID-Regler*

@Hartmut
 Hallo Hartmut! Hab den Bausteine angeschaut. Auf den ersten Blick gefällt mir, dass I_Tn_s und D_Tv_s als Realzahlen angegeben werden können (Keine schiebereien mehr mit den Werten vom HMI). Dazu dann noch die zwei Impulsausgänge, nicht schlecht! Im Test auf dem Schreibtisch läuft er sauber; mit den Impulsausgängen lässt sich recht simpel ein Neutralisationsregler (Wasseraufbereitungstechnik) mit zwei Magnetventilen realisieren. In einem aktuellen Projekt muss der Regler bald seine Feuertaufe in der Praxis bestehen. 

 @klickiebuntie-siemens-baustein-spsler:
 Man kann so gut wie alles aus vorgefertigten, zugekauften Bausteinen zusammenklicken, ohne je verstehen zu müssen, was AWL bedeutet, geschweige denn wie es Funktioniert. Ein bisschen selber das Gehirn anwerfen schadet nie. 
 Es werden täglich neue Räder erfunden, und jedesmal kommt eines dabei raus, das besser zu einem Auto passt ... <img>


----------



## Hartmut Lux (24 September 2006)

*Überarbeiteter Baustein*

Hallo Leute,

habe den Reglerbaustein in folgender Hinsicht überarbeitet:

* Zykluszeitüberschreitungen von 2s führen zu einem Überspringen der Berechnung und nicht zu einem internem Neustart => dadurch kann in der CPU z.B. Uhrzeit und Datum fast ohne Einfluß auf den Regler gestellt werden und ein seperater Baustein für die 400-er Steuerung wird nicht mehr benötigt. So kann auch, nach Spannungausfall, der Regler neu gestartet werden oder vom letzten Wert aus weitermachen.

* Für Neustart und Ausschalten kam ein neuer Eingang "Reset" in der Schnittstelle hinzu.

* Mit einem binärem Eingang "Pause" kann der Regler deaktiviert werden um danach, mit dem alten, schon erreichten Wert, wieder weiter zu arbeiten, braucht man nicht nutzen, ist aber vorteilhaft für Materialflußsysteme mit kurzzeitigem, prozeßbedingtem Stop.

* Über den Eingang "dyn_AWU" kann ein dynamischer Anti-Wind-Up-Algorithmus aktiviert werden, welcher das nervende Überschwingen durch vorzeitigen Integralwertaufbau sehr gut verhindert (siehe Beitrag von Karl "gravieren" im Forum, entspricht Typ 5). Hat mich in der Simulation sehr positiv überzeugt, führt eventuell aber zu einer leicht verlängerten Einschwingzeit. 

Hartmut


----------



## bernd67 (25 September 2006)

*bernd67*

hallo
ich würde den regler auch gern ausprobieren
für eine S7-300
meine addy hecker.bernd@haboe.de


----------

