oscat.lib > Anwendungsbeispiele / Application Examples

PID ich bekomms nicht hin...

<< < (2/2)

shrimps:
So ich bin nun etwas weiter...

Oben läuft via PID / PWM und unten klassisch...
Oben aber der 3-er komplett angesteuert...

Nun möchte ich den 3-er Stab oben einzeln ansteuern:
Jeweils mit einem eigenen SSR.

Nun folgende Idee:
Ich nutze den PID für die Vorgabe und schalte / Takte dann stufenweise.
Beispielcode (DLE = Heizstab)

--- Code: ---case pid of
0..4: nada
05..19: DLE1 anteilig pulsen
20..39: DLE1 immer an
...........DLE2 anteilig pulsen
40..90: DLE1, DLE2 immer an
...........DLE3 anteilig pulsen
90..100 ALLE AN
case_end

--- Ende Code ---

Habt ihr eine bessere Lösung ?
Ich vermute das der PID hier immer gestört wird weil ich ihm ja unterschiedliche Leistungen unterjuble ?!

LG
Shrimps

Alex.dede:
Hey mal ne blöde Idee aber fahr doch deine Heizstäbe mit einem FU an.  ;)
Gruß Alex

shrimps:
Hi Alex,
Danke für die Idee...
Momentan bin ich ganz zufrieden...
Habe den unteren n.n. eingebaut (Warten auf Zeit/Sommer).
Fahre noch mit extrenen Patrone im Rücklauf...

Beide hängen nun jeweils an einem 3RF2420-1AB45.

Ich nutze den CTRL-PID mit folgenden Einstellungen:
Oben: KP=6.5, TN=0.4, TV=0.5
Extern: KP 3.0, TN=0.3, TV=0.5

PWM mit 2s

Die Werte der PID habe ich empirisch ermittelt, den PWM ebenfalls.

mactoolz:
Hi,

bei so trägen Regleungen wie z.B. hier bei den Temperaturen, nehme ich einen PID-Regler, nehme den Stellwert und übergebe den Stellwert der ja eine Prozentangabe ist an ein PWM Signal.

Wenn du dann deine Leistung noch aufteilen möchtest, kann man ja hiermit das aufteilen ...

MAX((pntIN_pdt_DATA^.pdt_Heizer.DATA.pdt_PID.pdt_PARA.OUT.rY * 2) -100 , 0)
MIN((pntIN_pdt_DATA^.pdt_Heizer.DATA.pdt_PID.pdt_PARA.OUT.rY * 2) , 100)

So steuere ich meinen Solarkollektor, Sole Wärmepumpe etc. und verschiedene Aktoren mit denen ich anhand der Temperatur
die Ladung etc in verschiedenen Ebenen steuere etc. ...


Gruß
MacToolz

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln