pH-Wert Regelung; pulsender Ausgang für Quetschventil (FB41;FB43)

Chrischizzle

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Forumsbenutzer,

ich habe folgendes Problem:

Es soll eine pH-wert Regelung realisiert werden. Es handelt sich um ein Becken mit Rührwerk. Der Zufluss/Abfluss ist nicht definiert. Durch Zugabe von "Kalkmilch" (Quetschventil via Luftdruck) wird der durch den Zufluss beeinflußte pH-Wert (fallend) auf beispielsweise 6 gehalten/gehoben.
Ich habe dazu den PID-Regler FB41 und den Pulsgen FB43 verwendet (vorhanden: Simatic S7 400; CPU 412-2 [412-2xJ05-0AB0] v.5.3.0; CP 443-1 v.2.4). Dabei gibt es große Probleme. Die Hilfe dazu beschreibt mir wie ich beide zu verschalten habe aber so funktioniert es bei mir nicht. Ich denke das es bei mir ein Laufzeitproblem/Abarbeitungsproblem ist. Folgendes hab ich getan:

- eigenen FB33 erzeugt mit den genannten FB`s
- aufruf des FB33 mittels OB35 = 100ms
- Cycle PID-Regler = Periodendauer (PER_TM) Pulsgen -> bei mir 3s
- Cycle Pulsgen = 100 ms

Nach Beschreibung ist die Genauigkeit des Pulsgen abhängig von dem Verhältnis Periodendauer zur Zyklusszeit: bei mir 3s/100ms = 30% ->d.h. die kürzesten Pulse des Pulsgen werden bei einem Regler-Ausgang umdie 30% gestartet (empirisch ermittelt: 33.4% bei reinem P-Regler). Dabei erwarte ich bei steigendem Reglerausgang das der Pulsgen durch PWM die Pulse immer länger werden bis er permanent "1" bleibt.

Nun zu meinem Problemen:

* Als reinen P-Regler funktioniert der Pulsgen so wie ich es erwarte. Sobald ich den I-Anteil dazu schalte pulst der Pulsgen nicht mehr sondern gibt nur "1" aus ab dem Schwellwert des kürzesten Pulses.

* als Tests habe ich mir den Ist-Wert über "forcen" vorgegeben; dabei war alles (nur P-Regler) ok -> als ich es an der Anlage testen wollte pulste der Pulsgen nicht sondern gab nur eine permanente "1" aus

--> Vielleicht ist die Verwendung des FB43 für meine Anwendung nicht optimal? Wäre es eventuell ratsam die Pulse anders zu erzeugen (z.B. eigenen "Blinker"-Baustein mit variablen Zeiten o ähnl.)?
-->Warum funzt es mit "forcen" und nicht mit gemessenen Ist-Wert?
-->Warum verhält sich der Pulsgen anders wenn ich den I-Anteil zuschalte? Sollte das dem Pulsgen nicht egal sein ob der Regler P oder PI Verhalten hat?


Vielen Dank schon mal im voraus an alle Experten die mir helfen wollen/können ...
 
Arbeitet der Pulsgenerator vielleicht richig und dein Regler läuft auf 100% Stellsignal weil deine Reglereinstellung für den I-Anteil nicht passt?
Oder Kurz gesagt ist dein Ti vielleicht zu klein?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ NBERGER:

Danke für dein Interesse.
Bei meinen Test habe ich immer den Reglerausgang beobachtet. In den Bereichen (Regler-Ausgang zw. 30-50%) wo ich aber pulsende Ergebnisse erwarte bringt mir der Pulsgen nur "1". Da ich noch in der Testphase bin hab ich ein kleines Kp (ca. 1-2) und ein großes Ti (20-30s) gewählt.
 
PID-Regler sind nicht geeignet für Ph-Regelung wegen der nichtlineare Wirkung. Ich habe gute Ergebnisse gehabt indem ich die Kalkdosierung mit einer Rampe hoch fahre bis die Ph-Messung ca. 0,1 oder 0,2 Ph vom Sollwert entfernt ist dann die Rampe stoppen und von minimum neu anfangen.

So kriegt man eine schnelle aber trotzdem genaue Regelung. Mit PID-Regelung kriegst Du entweder eine schnelle oder eine genaue Regelung - aber nicht beides!
 
Hallo.
Habe mir damlas für eine Neutralistationsanlage eine pH-Regler selber geschrieben. Dieser hat einen Ausgang für Säure und einen für Lauge. Des weiteren hat er eine Funktion mit drinnen, das bis du einem einstellbaren Wert vorm Sollwert das jeweilige Ventil dauerhaft geöffnet hat. Nach erreichen dieses Wertes wird auf den Impuls-/ Pausenbetrieb umgeschalten. Habe mit dem Regler bei dieser und auch bei anderen Anlagen sehr gute erfolge gehabt.
Es ist vom Prinzip her eine PD-Regler. Wenn du Chrischizzle interesse daran hast, kann ich dir den gerne zukommen lass.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@RMA:

Vielen herzlichen Dank für dein Lösungsvorschlag hinsichtlich der pH-Wert Regelung. Ich werd dies mal ausprobieren und wahrscheinlich auch so umsetzen.


@Allgemein:

Aber abgesehen davon das es eine pH-Wert Regelung ist würd ich schon gern mal wissen warum der Aufbau mit dem FB41 & FB43 bei mir nicht so funktioniert wie ich es oben beschrieben hab.

:confused:
 
@ Hubert:

Vielen herzlichen Dank für dein Angebot.
Würde mich auf jeden Fall interessieren wie du das programmiertechnisch gelöst hast. Wahrscheinlich bräuchte ich dann nur den Laugenausgang da ja das saure [flüssige] Medium eh über den Zulauf (den ich nicht beeinflussen kann) kommt. Aber würde denn dann die richtige Funktionalität gewähleistet sein?
Wenn du es mir zukommen lassen könntest wär das grandios...

:TOOL:
 
--> Vielleicht ist die Verwendung des FB43 für meine Anwendung nicht optimal? Wäre es eventuell ratsam die Pulse anders zu erzeugen (z.B. eigenen "Blinker"-Baustein mit variablen Zeiten o ähnl.)?
-->Warum funzt es mit "forcen" und nicht mit gemessenen Ist-Wert?
-->Warum verhält sich der Pulsgen anders wenn ich den I-Anteil zuschalte? Sollte das dem Pulsgen nicht egal sein ob der Regler P oder PI Verhalten hat?

Der PULSEGEN ist erstmal unabhängig von deinem PI-Regler. Im einfachsten Fall erzeugt dir der PULSEGEN je nach Eingangssignal von 0..100% die entsprechende PWM.

Wenn dein CONT_C Werte von 0..100% ausgibt, musst du den PULSEGEN mindestens wie folgt beschalten (bei dem CONT_C musst du MAN_ON noch mit FALSE beschalten, beim PULSEGEN ist die Vorbelegung für diesen Eingang schon FALSE, siehe Doku):

Code:
      CALL  #PULSEGEN
       INV     :=#LMN
       PER_TM  :=T#10S
       P_B_TM  :=T#100MS
       RATIOFAC:=
       STEP3_ON:=FALSE
       ST2BI_ON:=
       MAN_ON  :=
       POS_P_ON:=
       NEG_P_ON:=
       SYN_ON  :=
       COM_RST :=
       CYCLE   :=#cycle
       QPOS_P  :=#Ventil_oeffnen
       QNEG_P  :=

Die Variable LMN ist der Stellgrößenausgang vom PI-Regler. Mal angenommen dort kommen 50% heraus, würde der Ausgang Ventil_oeffnen im 5-Sekunden Takt ein- und ausgeschaltet.
Bei meiner Beispiel-Beschaltung mit 10 Sekunden Periodenzeit und 100ms minimaler Pulszeit, wird bei einem Eingangswert von < 1 kein Signal mehr erzeugt, weil die daraus berechnete Pulszeit unter 100ms liegt.

Die Funktion des Bausteins kannst du erstmal testen, indem du anstatt LMN vom Regler einfach eine Real-Konstante oder ein Merker-Realwert anschaltest, um dich dann etwas mit der Funktion vertraut zu machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Chrischizzle,
denke schon das der Baustein bei dir passen müsste. Läuft das Wasser nur in dem Becken durch oder wie ist der Ablauf des Wasser gesteuert?
Also wo ich ihn als erstes eingesetzt hab war in einem Betrieb die das Wasser, welches von einer Beizanlage kamm neutraliesieren musste. Es kamm mit einem pH-Wert von ca. 2 in den Behälter der 100m³ faste und wurde dann auf einen pH-Wert von 7 angehoben. Der Vorgang ging recht schnell und war auch recht genau. Schick mir einfach deine E-mail Adresse per PN zu, das lass ich dir den Baustein mal zukommen.
 
- aufruf des FB33 mittels OB35 = 100ms
- Cycle PID-Regler = Periodendauer (PER_TM) Pulsgen -> bei mir 3s
- Cycle Pulsgen = 100 ms

Nun zu meinem Problemen:

* Als reinen P-Regler funktioniert der Pulsgen so wie ich es erwarte. Sobald ich den I-Anteil dazu schalte pulst der Pulsgen nicht mehr sondern gibt nur "1" aus ab dem Schwellwert des kürzesten Pulses.

...

Die Abtastzeit (CYCLE) des Reglers muß der Abtastzeit bzw. dem Aufrufintervall entsprechen. In deinem Fall sind das wahrscheinlich die 100ms des OB35. Wenn du dort 3s drann stehen hast, und rufst den Regler alle 100ms auf, dann macht der I-Anteil diese riesen Sprünge. Salopp gesagt macht er das, was er nach drei Sekunden machen müsste, alle 100ms.

Bzw. wenn du bei den 3s bleibst, dann darf der FB41 auch nur alle drei Sekunden aufgerufen werden.


Onlinehilfe zum FB43
Stellwertgenauigkeit

Durch ein "Abtastverhältnis" von 1:10 (CONT_C-Aufrufe zu PULSEGEN-Aufrufe) ist die Stellwertgenauigkeit in diesem Beispiel auf 10% beschränkt, d.h. vorgegebene Eingangswerte INV können nur im Raster von 10% auf eine Impulslänge am Ausgang QPOS abgebildet werden.

Entsprechend erhöht sich die Genauigkeit mit der Anzahl der SFB/FB "PULSEGEN"-Aufrufe pro CONT_C-Aufruf.

Wird z.B. PULSEGEN 100 mal häufiger aufgerufen als CONT_C, so erreicht man eine Auflösung von 1% des Stellwertbereiches.

Hinweis
Die Untersetzung der Aufrufhäufigkeit müssen Sie selbst programmieren.
Den FB43 würde ich nicht verwenden. Beispiele zu PWM gibt es hier irgendwo im Forum.


Gruß, Onkel
 
Zuletzt bearbeitet:
Wie kann man die Untersetzung im OB35 machen?

Der FB43 (Pulsegen) wird im OB35 (100ms) jedesmal aufgerufen. Bei jedem OB35 Aufruf wird ein Zähler angesteuert, wenn der Zählerstand 100 erreicht hat, erst dann wird der FB41 (CON_C) aufgerufen. Anschliessend wird der Zähler zurückgesetzt.

Was sollte man noch Berücksichtigen bei einer Untersetzung?
 
@ Onkel Dagobert:

Vielen Dank für deine Infos.

Das hab ich mir schon gedacht das die Zykluszeit des Reglers dem des OB35 (100ms) entsprechen sollte. Was mich aber sehr verwundert ist das dass Beispiel in der Online Hilfe dem Regler die Zykluszeit der Periodendauer des Pulsgen angetragen ist, so wie bei mir. Weil ich dachte das die Online Hilfe "die Wahrheit" ist. Scheinbar ist die OnlineHilfe in diesem Punkt einfach nur falsch.
Ich werde mal weiter hier im Forum, um einen Ersatz für den FB43 oder besser gesagt um eine PWM, suchen...
 
Zurück
Oben