# Ist ein fertiger Regelbaustein überhaupt nötig?



## stephan282 (1 November 2007)

Nabend zusammen! Ich habe folgendes Problem. Um ein 3 Wegeventil in einer Heizungsanlage zu steuern muss ich eine stetige Regelung entwerfen. Es soll folgendes passieren: Von einem Touchpanel bekomme ich als Sollwert z. B. 60° C vorgegeben. Ein PT100 gibt mir als Istwert z.B. 70 °C oder 50 °C vor.Wenn diese 60 °C also unter bzw. überschritten werden, soll das Ventil sich so einstellen ,das wieder die 60 °C erreicht werden. Ich habe schon dermaßen  viel Material hier im Forum oder auch auf zig anderen seiten über den fb41 und den fb58 gelesen, dass ich jetzt nicht richtig weiß wie ich die Sache angehen soll. Ist für solche Regelung denn überhaupt so ein Regelbaustein notwendig? 
Es ist auch das erste Mal, das ich so eine Regelung entwerfen muss. Ich weiß aller Anfang ist  schwer, aber vielleicht könnt ihr mir nützliche Tipps geben.
Gruss an Alle !


----------



## Bitverbieger (1 November 2007)

Mann kann sich ja einen Baustein selber zusammenbauen.
Ich würde einen der Beiden nehmen. Ich glaube der FB41 ist etwas
einfacher.


----------



## stephan282 (1 November 2007)

Mmh! Einen Baustein selber zusammenbauen,ok! Und wie kann ich mir das vorstellen? Habe mich eigentlich auch schon ziemlich in den fb41 reingelesen und rumprobiert, nur leider ohne glückliches Ende. Mein Problem hab ich auch schon bei Siemens Hotline geschildert, und die haben mir den fb58 empfohlen. Wat nu?


----------



## gravieren (1 November 2007)

Hi

Du kannst ja auch mal den PID-Regler der OSCAT-Lib probieren.


www.OSCAT.de


Ist ein guter und einfacher PID-Regler ,  zudem ist der SCL-Quellcode verfügbar.


----------



## AndreK (1 November 2007)

*Du könntest das ganze mit einem Faktor...*

vieleicht einfacher hinbekommen.

Beispiel: Du hast die Ventilstellung im Proggi von 0-100%. Ist es zu kalt, erhöst du in Zeitschritten langsam. Und andersherum wird gesenkt...

Es ist natürlich wichtig die Zeit einigermaßend träge einzustellen um ein überschwingen zu vermeiden (ich benutze sowas ähnliches für Rauchgasreinigungsanlagen, und die sind träge  ).

Einstellbar wäre dann:
- Zeitschritt
- Verstellung
- mann könnte noch delta Schwellwerte mit einbauen um ein schnelleres nachsteuern zu ermöglichen. Am besten als % Vorgabe damit man bei einer anderen Temperaturvorwahl nicht alle Parameter neu einstellen muß...


----------



## Onkel Dagobert (1 November 2007)

Hallo stephan,

ich würde dir zu dem FB41 raten. Es ist eigentlich garnicht so schwer, den Regler zum Funktionieren zu bringen. Sollwert, Istwert und Parameter, viel mehr ist eigentlich nicht notwendig. Wo genau liegt dein Problem? "Geht nicht" reicht nicht, um Ratschläge zu geben.

Wie wird das Ventil gesteuert, stetig (0..10V) oder 3-Punkt (Auf/Halt/Zu)?

Was AndreK beschreibt, wird sicherlich in bestimmten Fällen ausreichend funktionieren. Es gleicht jedoch der Quadratur des Kreises  .


Gruß, Onkel


----------



## Zottel (2 November 2007)

Onkel Dagobert schrieb:


> Was AndreK beschreibt, wird sicherlich in bestimmten Fällen ausreichend funktionieren. Es gleicht jedoch der Quadratur des Kreises  .
> 
> 
> Gruß, Onkel



Nö, das mit der Quadratur haben Mathematiker von Euclid bis in die frühe Neuzeit erfolglos probiert, bis man beweisen konnte, daß PI keine rationale Zahl ist.

Das andere ist nicht so schwer:
diff=Soll-ist
if (diff>hysterese) and (pulse) ventilZu;
if (diff<hysterese) and (pulse) ventilAuf;Dabei ist "pulse" ein Signal, das für eine bestimmte Zeit high ist und danach eine normalerweise längere Zeit low, damit man erst mal abwarteten kann, welcher neue Istwert sich einstellt.
Das funktioniert, wenn du nicht so schnell wie möglich den Sollwert erreichen mußt.
Hystere ist dafür da, damit das Ventil nicht dauernd arbeitet, weil es immer ein bischen zu warm oder zu kalt ist.


----------



## Perfektionist (2 November 2007)

Hi,

ich hab auch schon mal mit so einer Wärmetauschers...ache zu tun gehabt. einmal wars ne Heizungsregelung, ein anderes Mal das Kühlmittel eines BHKW. Drei-Wege-Ventil, Belimo Stellantrieb ohne Stellungsrückmeldung (also integrierend), nur ein Kontakt für ganz offen und einer für geschlossen.

Ich hab daraus eine Schrittkette gemacht. Zunächst hab ich bei Anlauf der Anlage geprüft, ob der Antrieb bis ganz zu und anschließend bis ganz auf läuft, dann zeitgesteuert eine Mittelstellung angefahren. Dann habe ich immer eine feste Zeit auf Prozessreaktion gewartet. Dann hatte ich zum Grobregeln eine Abfrage "wenn große Differenz" dan "fahre großes Stück" in entsprechende Richtung. Zum dann Feinregeln "wenn Abweichung größer Hysterese" dann eben "kleines Stück fahren" in entrsprechender Richtung. Und dann noch das Ganze asymetrisch, weil wenns anfängt, zu kochen, wirds unangenehm. d.h. wenn Isttemperatur des Motors deutlich zu hoch, dann drastischer Eingriff. ansonsten langsam von unten herantasten.

Das darf nur nicht mein ehemaliger Arbeitgeber aus der Regelungstechnik lesen - damals war Vorgabe: kein Expertenwissen im Regler!

Gruß und viel Spass beim Regeln.

PS: FB??? wwi? tschuldigung, das erste Projekt war damals noch mit S5, das zweite Projekt mein erstes mit S7.


----------



## stephan282 (2 November 2007)

Hallo! Erstmal Danke für die rege Teilnahme. Um mal auf Onkel Dagoberts Fragen einzugehen!Also meinst du der fb41 ist am geeignetsten, ja? Also das 3 Wegeventil bekommt 4-20 mA von der SPS und soll in Abhängigkeit von einem PT100 Auf/ Halt/ Zu gefahren werden. Das elektrische Signal wird dann von einem I/P Wandler in ein pneumatisches Signal umgewandelt. Aber das Ventil soll nicht sprungartig öffnen und schließen sondern langsam auf -und zu fahren. Wäre da eine Zeitvorgabe sinnvoll, die meinetwegen alle 5 s. den Wert abfragt und dann das Ventil langsam regelt?Wie kann ich das dann dem fb41 angeben? Gruß Stephan


----------



## jabba (2 November 2007)

Hallo stephan282,

also der FB58 ist meines erachtens nicht komplizierter sondern bietet mehr Möglichkeiten, die man sehr oft nicht braucht. So kann man da die Änderungsgeschwindigkeit des Stellsignales begrenzen , so wie von Dir gewünscht.
Wichtig ist die Stellgröße anzupassen, die ist beim generieren des Instanz-DB 0-100% wenn Du also mittelstellung am Ventil hast, wären das 50% stellwert, du must dann das Analogventil auch mit 0-100% Scalieren.
Ich mache es meistens so, das ich -100%(kühlen) bis +100% (heizen) vorgebe.
Den FB solltest Du über den OB35 aufrufen, den kannst Du in den Hardwareeigenschaften auf z.B. alle 5 sekunden stellen, dann must Du dem Regler aber mitteilen, das er eine Zeitbasis von 5s hat. Dies wir am Parameter Cycle angegeben.
Am Anfang zum testen würde ich I (I_Sel) und D (D_Sel) abschalten um erst einmal den Regler zu testen. Den P-Anteil mal aus dem Bauch heraus auf 5.00, d.h ein Grad differenz Soll-Ist ergeben 5% am Ausgang.


----------



## Onkel Dagobert (2 November 2007)

Hallo Zottel, hallo Perfektionist,

Entschuldigung, aber was ihr beschreibt ist schlicht und ergreifend Pfusch (mangelhaft ausgeführte Arbeit). "Expertenwissen", ich fasse es nicht. Warum gebt ihr in aller Öffentlichkeit derart bescheuerte Ratschläge? Und stolz darauf seid ihr wohl auch noch?

Wenn die S7 keine Gleitpunktarithmetik bieten würde, wäre es vielleicht aktzeptabel. Aber es werden heute fertige PID-Regler mitgeliefert. Man muss sie nicht einmal selber schreiben. Wozu also dieses aufwändige, laienhafte Drumherumprogrammieren?

Tut mir Leid dass ich mich etwas deutlicher ausdrücken musste.


Gruß, Onkel


----------



## Perfektionist (2 November 2007)

Onkel Dagobert schrieb:


> Wie wird das Ventil gesteuert, stetig (0..10V) oder 3-Punkt (Auf/Halt/Zu)?


 
ich habe wohl etwas voreilig geantwortet - hätte wohl die Beantwortung dieser Frage abwarten sollen. Es gibt Anlagenbauer, die eine Rückmeldung und im vorliegenden Fall sogar eine Modifikation der Verstellgeschwindigkeit mit einbauen. Meine Lösung war ohne - und dementsprechend nicht passend für die vorliegende Anlage. Bitte meinen daher überflüssigen Beitrag zu entschuldigen.


----------



## Zottel (3 November 2007)

Onkel Dagobert schrieb:


> Hallo Zottel, hallo Perfektionist,
> 
> Entschuldigung, aber was ihr beschreibt ist schlicht und ergreifend Pfusch (mangelhaft ausgeführte Arbeit). "Expertenwissen", ich fasse es nicht. Warum gebt ihr in aller Öffentlichkeit derart bescheuerte Ratschläge? Und stolz darauf seid ihr wohl auch noch?


Nein, nicht stolz. Aber die Frage war, ob es NÖTIG ist, einen fertigen Reglerbaustein einzusetzen. Und mit der Quadratur des Kreises hast du provoziert. Richtig ist, daß ich stillschweigend angenommen habe, daß das Ventil mit Auf- und Zu-Impulsen gesteuert wird.
Der "Vorteil" des fertigen FB ist sicher, daß er getestet ist und alle Reglerparameter explizit dastehen (können). Ebenso KÖNNEN Ein- und Ausgangsgrößen in gebräuchlichen Einheiten angegeben werden.


> Wenn die S7 keine Gleitpunktarithmetik bieten würde, wäre es vielleicht aktzeptabel. Aber es werden heute fertige PID-Regler mitgeliefert. Man muss sie nicht einmal selber schreiben. Wozu also dieses aufwändige, laienhafte Drumherumprogrammieren?


Aber das braucht zehnmal soviele Programmzeilen und man muß die Parameter ermitteln. Es lohnt sich nicht IMMER. Es gibt auch immer noch Bimetallthermostate, obwohl man eine S7 mit Temperatursensor und Regler-FB nehmen KÖNNTE.
Man könnte auch einen LQG-Regler verwenden und ihn optimieren, Stellbewegungen des Ventils zu minimieren. Spart Energie und Verschleiß. Wozu also das laienhafte Festhalten an PID-Reglern? Oder wäre DAS Pfusch, weil es dafür noch keinen FB von Siemens gibt? Oder ist in Zeiten des Klimawandels jetzt nicht ALLES ANDERE Pfusch, weil man ja ein paar kWh sparen könnte?


----------



## Larry Laffer (3 November 2007)

... gut gebrüllt, Löwe ...

Wenn man das vorhandene immer als Dogma nimmt, dann erzielt man auch keine Weiter-Entwicklung ...

Ob das in diesem Fall auch so ist, ist dafür völlig unerheblich ...


----------



## Perfektionist (3 November 2007)

gibt es irgendwo bei den Programmierstrategien schon einen Thread über das für und wider von PID-Algorithmen? Hätt mal Lust,
1. mich upzudaten.
2. mal wieder eine schöne Grundsatzdiskussion zu haben.


----------



## zotos (3 November 2007)

Hier gibt es Streit und ich bin nicht dabei... das ändere ich mal schnell.

Ich würde zu einem der Standard PID Bausteinen greifen. Diese Bausteine triffst Du ja überall und wenn Du Dich damit mal auseinandergesetzt hast, ist das nächste Zusammentreffen nicht mehr so schlimm.


----------



## Dabbes vorm Herrn (3 November 2007)

*Ich habe da vielleicht was...*

Ich habe hier was dran gehangen.

Das ist eigentlich ein kleiner Regelbaustein für die Steuerung einer Pumpe, aber das kannst auch für dein Ventil nehmen.

Als Istdruck nimmst du deine Isttemperatur,  Grenzwert ist ja klar, den 0-100% Ausgang(FU_Soll) skalierst du auf deinen Strom-oder Spannungsausgang.

Das Teil ist in der Deklaration in Wörtern geschrieben. Wie das mit Int geht, weiss ich noch nicht.

Für den Sollwert nimm einfach ein Datenwort oder ein Merkerwort, das sonst nicht in Gebrauch ist.

Für den Takt nimm nen Sekundentakt.

Gruss Dabbes


----------



## stephan282 (5 November 2007)

Hallo Zusammen! Sitze gerade mal wieder davor den fb41 zu parametrieren!
An welchen Eingang kommt denn mein Istwert wenn er von einem PT100 direkt kommt? Der Wert ist in einem db1 hinterlegt worden als Realzahl. Und wenn mein ich mein Ventil anschliessen möchte,an welchen Ausgang kommt es? Den Sollwert habe ich an SP INT geschrieben, ist das korrekt?  Der Sollwert wird mir von einem Touchpanel vorgegeben und ist ebenfalls im db1 hinterlegt.Zusätzlich möchte ich auch noch eine Hysterese vorgeben. Fragen über Fragen! Sitze an meiner Facharbeit und komme nicht wirklich voran! Brauche verständliche Tipps von Euch! Gruß Stephan


----------



## PeterEF (5 November 2007)

stephan282 schrieb:


> Hallo Zusammen! Sitze gerade mal wieder davor den fb41 zu parametrieren!
> An welchen Eingang kommt denn mein Istwert wenn er von einem PT100 direkt kommt? Der Wert ist in einem db1 hinterlegt worden als Realzahl.


 
PV_IN nutzen und PVPER_ON auf FALSE setzen.



> Und wenn mein ich mein Ventil anschliessen möchte,an welchen Ausgang kommt es? Den Sollwert habe ich an SP INT geschrieben, ist das korrekt?


 
LMN bzw. LMN_PER für die Baugruppe als Word, Parameter für Grenzwerte/Skalierung beachten.

Ja.



> Der Sollwert wird mir von einem Touchpanel vorgegeben und ist ebenfalls im db1 hinterlegt.Zusätzlich möchte ich auch noch eine Hysterese vorgeben.


 
DEADB_W > 0.0 setzen



> Fragen über Fragen! Sitze an meiner Facharbeit und komme nicht wirklich voran! Brauche verständliche Tipps von Euch! Gruß Stephan


 
Das grundlegende Dokument zum FB41 hat nur 42 Seiten (Step7 - PID-Control unter /Simatic/Dokumentation/Deutsch)


----------



## stephan282 (5 November 2007)

Verstehe ich es richtig, dass wenn ich CYCLE auf 5s setze, die Werte alle 5s verglichen werden?Gruß Stephan


----------



## PeterEF (5 November 2007)

stephan282 schrieb:


> Verstehe ich es richtig, dass wenn ich CYCLE auf 5s setze, die Werte alle 5s verglichen werden?Gruß Stephan


 
Schön wärs. 
Du rufst den Regler hoffentlich nicht im OB1-Zyklus auf sondern äquidistant z.B. über den OB35.

Die Zeit, mit welcher der OB35 parametriert ist, muß hier angegeben werden, damit der Regler alle von der Abtastzeit abhängigen Werte (I,D) richtig berechnen kann - Stichwort quasikontinuierliche Regelung.


----------



## MSB (5 November 2007)

Der FB41 muss im OB35 aufgerufen werden,
die in der HW-Konfig parametrierbare Aufrufzeit,
muss dann an den Parameter Cycle.

Ohne gesonderte Parametrierung beträgt die Zeit standartmäßig 100ms.

Mfg
Manuel


----------



## stephan282 (5 November 2007)

Habe ich vergessen zu erwähnen! ja ,habe den 0b 35 vorher aufgerufen und
den fb dort eingefügt.


----------



## stephan282 (5 November 2007)

Hallo! Ich muss nochmal nachfragen! ( Bin froh das es dieses Forum gibt)
Mein Ventil bekommt ein analoges Ausgangssignal von 4-20 mA. Dann ist es also egal.,ob es nun auf oder zu fährt, am fb41 muss es auf jeden Fall an den 
LMN oder LMN Per ran, richtig?
Stephan


----------



## jabba (5 November 2007)

Hallo stephan282,

der kommt an LMN dran, wenn die Regelung falsch herum läuft gibts Du bei Gain eine negative Verstärkung an.

Da kommt aber ein Realwert raus , den du mit Unscale auf den Analowert ausgibt´s.


----------



## PeterEF (5 November 2007)

jabba schrieb:


> Hallo stephan282,
> 
> der kommt an LMN dran, wenn die Regelung falsch herum läuft gibts Du bei Gain eine negative Verstärkung an.
> 
> Da kommt aber ein Realwert raus , den du mit Unscale auf den Analowert ausgibt´s.


 
Warum so kompliziert - Unscale ist im FB41 schon integriert und wenn die Parameter LMN_HLM, ..LLM, ...FAC und ...OFF richtig stehen kommt an LMN_PER der fertig skalierte Wert 0..27648 raus.


----------



## stephan282 (5 November 2007)

Danke ,jabba für deinen Tipp !
Ich hab hier mal aufgeschrieben, wie ich bis jetzt vorgegangen bin am Fb 41 !


1. Sollwert von Integer auf Real mit "Umwandler " geändert

2. Sollwert dann auf SP INT als Merkerdoppelwort gelegt

3. Istwert vom PT100 aus dem db1, auf den Eingang PV In gelegt

4. Am Ausgang LMN vom fb41 ein Md30 angelegt und den auf den UNSCALE geführt

5. Gain habe ich so belassen, weil ich keine Hysterese haben will

6. CYCLE habe ich am Aktualwert mit 100ms versehen, damit alle 100ms der Soll- Istwert verglichen wird

Genügen diese Schritte um einen Regler zu parametrieren, damit ein Motor in Abhängigkeit von der Temperatur auf und zu fährt?

Habe keine Vorkenntnisse, brauche Eure Hilfe! Stephan


----------



## stephan282 (5 November 2007)

Oh , Peter hat da noch einen anderen Vorschlag, da war ich eventuell ein bißchen voreilig mit meinem Text eben.
Aber wie nun? Danke an Euch!


----------



## jabba (5 November 2007)

Ob über den internen Umsetzer auf LMN_Per oder LMN über unscale ist vom Prinzip gleich. Ich geh halt immer über Scale, auch bei PV_In da ich alle Daten in einem DB für die Visualisierung aufbereite und meist noch Offset und Korrekturfaktor bereitstelle.

Zurück zum Thema.

Gain ist die Verstärkung der P-Anteil nicht die Hysterese. Die wäre DeadB_W Deadband-with oder auch Totband.

Mit den Daten läuft der Regler zwar los, aber keiner weiss wie, das hängt von der Anlage ab, und ist Erfahrungssache.


----------



## stephan282 (5 November 2007)

aber keiner weiss wie, das hängt von der Anlage ab, und ist Erfahrungssache.

Richtig, das ist es ja. Für mich ist es das erste Mal das ich mit dem FB 41 etwas ausprobiere. Und ich kann das alles nur simulieren hier zu Hause und später mit ein bißchen Glück an der Anlage ausprobieren. Leider sind diese 
Regelbausteine in Automatisierungstechnik in meiner noch laufenden Technikerausbildung nie behandelt worden. Und ich habe nur noch 5 Wochen bis zum Abschluss.
Danke !!
Stephan


----------



## jabba (5 November 2007)

Hallo stephan282,

weiss jetzt nicht ob Du das schon irgendwo angegeben hast,

hast Du PLCSIM auf deinem Rechner ?
Ich hab mir damals zum spielen einen Simluator reingebaut, der abhängig vom stellgrad und einem Faktor die Istwerte simuliert hat. Damit hab ich die Grundfunktionen der Regler sehr gut ausprobieren können.

Und fünf Wochen sind ja Luxus, wenn ich das sehe was ich in drei Wochen alles abgeben muss, und noch nie auf der SPS eingesetzt habe. ist deine Zeit wirklich kein Grund schon hektisch zu werden. Ich denke so eine Hilfe wie hier, wirst Du selten in deinem Leben von "fremden" Leuten erfahren.

Also "ruhig brauner" das wird schon...


----------



## stephan282 (5 November 2007)

Dieses Forum weiß ich auch wirklich zu schätzen! 

Jepp, PCLSIM ist drauf auf dem Rechner. Hab schon versucht den Regler mir anzeigen zulassen, aber bisher ohne Erfolg.
Habe mir Merker, Eingänge sowie Ausgänge anzeigen lassen.


----------



## jabba (5 November 2007)

Hallo stephan282

setz doch mal deine Anfänge hier rein, archivieren und hochladen.
Weiss noch nicht ob ich heute noch reinschauen kann,
aber vieleicht meldet sich ja noch einer.
Aber wir haben ja noch ein paar Tage Zeit.

ABER:
Wichtig ist, Du must willens sein die Sachen zu lernen und zu verstehen,
wir wollen hier den Leuten helfen, aber nicht deren "Hausaufgaben" lösen


----------

